2

我正在尝试使用 java 中的 itext pdf 库将数据库中的记录导出到 pdf 中。但是我在 pdf 文件中对齐 pdf 表时遇到了以下问题。

1.表格没有显示在完整的pdf页面中。它在pdf页面的左右两边留有空格。

2.每页仅显示一半页面的值。意味着pdf表格显示在一半的pdf页面中..

这是我的代码..

Document document = new Document();
        PdfWriter.getInstance(document, fos);


        PdfPTable table = new PdfPTable(10);

        table.setWidthPercentage(100);
        table.setSpacingBefore(0f);
        table.setSpacingAfter(0f);



        PdfPCell cell = new PdfPCell(new Paragraph("DateRange"));

        cell.setColspan(10);
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setPadding(5.0f);
        cell.setBackgroundColor(new BaseColor(140, 221, 8));

        table.addCell(cell);

        table.addCell("Calldate");
        table.addCell("Calltime");
        table.addCell("Source");
        table.addCell("DialedNo");
        table.addCell("Extension");
        table.addCell("Trunk");
        table.addCell("Duration");
        table.addCell("Calltype");
        table.addCell("Callcost");
        table.addCell("Site");

        while (rs.next()) {
            table.addCell(rs.getString("date"));
            table.addCell(rs.getString("time"));
            table.addCell(rs.getString("source"));
            table.addCell(rs.getString("destination"));
            table.addCell(rs.getString("extension"));
            table.addCell(rs.getString("trunk"));
            table.addCell(rs.getString("dur"));
            table.addCell(rs.getString("toc"));
            table.addCell(rs.getString("callcost"));
            table.addCell(rs.getString("Site"));
        }




        table.setSpacingBefore(5.0f);       // Space Before table starts, like margin-top in CSS
        table.setSpacingAfter(5.0f);        // Space After table starts, like margin-Bottom in CSS                                          

        document.open();//PDF document opened........                   

        document.add(Chunk.NEWLINE);   //Something like in HTML :-)

        document.add(new Paragraph("TechsoftTechnologies.com"));
        document.add(new Paragraph("Document Generated On - " + new Date().toString()));

        document.add(table);
        document.add(Chunk.NEWLINE);   //Something like in HTML :-)           
        document.newPage();            //Opened new page
                   //In the new page we are going to add list

        document.close();

        fos.close();
4

1 回答 1

7

我必须多次阅读您的问题,然后才明白您想压制页边距。我复制/粘贴(并改编)了您的示例,并且我认为我无法重现您的问题,因为我(和许多其他开发人员)已经习惯了页面有边距的事实。

无论如何,这是我的示例版本:FullPageTable,它会创建以下 PDF:full_page_table.pdf

我做了一些小的更改,例如:将“Paragraph”作为参数传递是没有意义的,PdfPCell因为Paragraph它将被视为 a Phrase,但我认为您正在寻找的行是:

Document document = new Document(PageSize.A4, 0, 0, 0, 0);

零定义了边距的宽度,如果我正确理解了您的问题,您想抑制这些边距。

至于你的指控,每一页都只在一半的页面中显示值。意味着 pdf 表在一半的 pdf 页面中显示,我认为你是通过引入document.newPage();否则你的指控没有意义的原因造成的 ;-)

于 2013-11-09T11:24:18.893 回答