iText - 使用一个小表和一个大表创建PDF会导致大表移动到新页面而不是拆分

时间:2017-06-23 15:08:18

标签: java pdf itext

我正在尝试使用一些数据创建PDF。数据用表格表示。有2个表。

一个表格中有5行3列占据了PDF页面的近一半1.另一个表格有50行和3列,它们是在新页面中创建的(第2页)而不是在第1页后继续第1页的表格。

如何使PDF在第1页的第一个表下创建第二个表,如果第二个表有更多行,则继续第2页。我应该使用PdfPageEvent吗?

public static void createPDF() throws IOException {
        Document document = new Document();
        PdfWriter pdfWriter = null;
        String fileName = "temp.pdf";
        try {
            filePath = tempDirPath + File.separator + fileName;
            FileOutputStream fos = new FileOutputStream(filePath);
            pdfWriter = PdfWriter.getInstance(document, fos);
            document.open();
            document.add(addTitleTable());
            document.add(addObjsTable());
            document.add(addDateTable());
            document.close();
            pdfWriter.close();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            document.close();
            pdfWriter.close();
        }
    }

1 个答案:

答案 0 :(得分:1)

您的问题无法复制。

我创建了这个例子:

public void createPdf(String dest) throws IOException, DocumentException {
    Document document = new Document();
    PdfWriter.getInstance(document, new FileOutputStream(dest));
    document.open();

    // Table 1
    PdfPTable table = new PdfPTable(3);
    table.setSpacingAfter(10);
    for(int i = 1; i <= 15; i++){
        table.addCell("Cell " + i);
    }
    document.add(table);

    table = new PdfPTable(3);
    for(int i = 1; i <= 150; i++){
        table.addCell("Cell " + i);
    }
    document.add(table);
    document.close();
}

首先,我们创建一个包含3列和5行(总共15个单元格)的表。我们在10个用户单位的表之后定义一个小间距。

然后我们创建一个包含3列和50行(总共150个单元格)的表。

我们将两个表一个接一个地添加到文档中。结果如下:

enter image description here

我已按照您在问题中分享的所有说明进行操作,我获得的结果显示您对第二张表在新页面上开始的指控是错误的。第二个表与第一个表在同一页面上开始。两个表之间有10个用户单元的间隙(如我们的代码中所定义)。也许您的代码存在问题,但请理解,如果没有人可以重现问题,没有人可以帮助您。