Java iText:创建的表(com.​;lowagie.​;text)仅占整个页面的80%,如何使其利用整个页面

Java iText:创建的表(com.​;lowagie.​;text)仅占整个页面的80%,如何使其利用整个页面,java,pdf,itext,Java,Pdf,Itext,我编写以下代码是为了创建一个包含表的PDF文件 Document document = new Document(PageSize.A4, 20, 20, 20, 80); Font myfont = new Font(FontFactory.getFont(FontFactory.COURIER_BOLD, 13, Font.NORMAL)); PdfWriter writer = PdfWriter.getInstance(document,

我编写以下代码是为了创建一个包含表的PDF文件

        Document document = new Document(PageSize.A4, 20, 20, 20, 80);
        Font myfont = new Font(FontFactory.getFont(FontFactory.COURIER_BOLD, 13, Font.NORMAL));
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(request.getRealPath("/") + "SAMPLE.pdf"));

        document.open();
        Table table = new Table(2);
        Cell c2 = new Cell();

        int[] widths = {8, 150}; //Tried different values, but no change
        table.setBorder(Rectangle.BOX);
        table.setAlignment(Element.ALIGN_LEFT);
        table.setSpacing(0);
        table.setPadding(0);
        table.setTableFitsPage(true); //Tried with 'false', even removed it, but no change
        table.setWidths(widths);

        c2 = new Cell(new Paragraph("1.     ", myfont));
        c2.setBorder(Rectangle.NO_BORDER);
        table.addCell(c2);
        c2 = new Cell(new Paragraph("TEST DATA     ", myfont));
        c2.setBorder(Rectangle.NO_BORDER);
        table.addCell(c2);

        c2 = new Cell(new Paragraph("2.     ", myfont));
        c2.setBorder(Rectangle.NO_BORDER);
        table.addCell(c2);
        c2 = new Cell(new Paragraph("TEST DATA", myfont));
        c2.setBorder(Rectangle.NO_BORDER);
        table.addCell(c2);

        c2 = new Cell(new Paragraph("3.     ", myfont));
        c2.setBorder(Rectangle.NO_BORDER);
        table.addCell(c2);
        c2 = new Cell(new Paragraph("TEST DATA", myfont));
        c2.setBorder(Rectangle.NO_BORDER);
        table.addCell(c2);

        document.add(table);
        document.close();
但是创建的文件包含一个表,它占据了页面的80-85%左右。我希望它能利用整个页面

我尝试对代码进行一些调整,比如更改
表.setTableFitsPage(true)
表。setTableFitsPage(假)
甚至尝试将其删除。 还根据指定的宽度进行了更改。但在所有情况下都是徒劳的,因为它只给了我一个只占页面80-85%的表的文件

是否有我缺少的东西需要添加到我的代码中,或者是否有阻止表占用100%页面的属性

当内容很大时会产生问题,因为我得到的是长表,页面上的空格仍然没有被占用

附上此处生成的实际PDF文件的屏幕截图


您应该重写表代码以供使用。你可以找到一些。第二版iText的整个第四章都是关于表格的,确切地说是PdfPTables


很多示例代码。享受。

改用PdfPTable类,您可以设置整个表的列宽。通过构造一个

float delta = document.getPageSize().getWidth() / numberOfColumns;
// add delta numberOfColumn times
PdfPTable table = new PdfPTable(new float[] {delta, delta, delta, delta });
table.setWidthPercentage(100f);

构造函数中传递的宽度决定了给定列相对于整个表的宽度的空间大小。

您使用的是哪个版本的iText?我使用的是iText-2.1.5.jar在这种情况下,我首先建议升级到最新版本(目前为5.0.6)。前往下载。与您正在使用的版本相比,最新版本将包含许多改进和错误修复,而且您更有可能从此类网站获得支持(因为使用最新版本的用户比使用非常旧版本的库的用户要多).支持表格的最后一个版本是2.17,之后itext直接跳到了5.0.x版本。5.0.0版本删除了表和其他与表相关的功能。。。在这里检查一下,你会发现在最后几行中提到了。。。。这就是我在2.1.5版本中工作的原因……在发布这个问题之前,我曾尝试过使用PdfPTable,但即使这样也没有帮助,后来我只是随便看了一下PdfPTable的一个示例,当我们添加属性
table.setWidthPercentage(100f)时,我看到了这一点
到代码表使用了100%的页面,之后只是尝试一下“表”并将其添加到我的代码
表中。setWidth(100f)
并给出了相对于100的宽度(即所有值加起来等于100),这就成功了。由于您与iText api密切相关,我想问,为什么从iText 5.x.x版本中删除了这些表及其其他功能?我认为表格结构是iText的重要组成部分,在创建PDF时经常使用表格。类
Table
被删除
PdfPTable
更加灵活/强大。用它代替。而且不需要一个通用的“表格”,因为我们现在只输出到PDF。不,我们不需要任何通用的东西,但是大多数实体在.pdf包的某个地方都没有高级的替代品。PS:我想我们应该反对它,而不是完全猛拉它,但这不是我的决定。谢谢……但我想这也是马克的建议,没有必要重复……无论如何……我已经检查过了,我还通过使用简单表本身解决了问题……在上面的评论中添加了我是如何做到这一点的……请检查一下。。。