iText 7 如何在 Java 中迭代时创建具有多个页面的单个 pdf 文件?

How iText 7 create single pdf file with multiple pages while iteration in Java?

我有一个循环,它将从数据库中获取数据并希望使用 iText 7 将它们打印到 PDF 文件。我的问题是假设数据库有 10 条记录,我想创建一个 10 页的 PDF 文档。

这是我的代码,此代码只会创建一个只有 1 页的文档并将其保存到某个位置。

list.forEach(item -> {

  String fileLocation = "path/records.pdf";
  WriterProperties wp = new WriterProperties();
  PdfWriter writer = new PdfWriter(fileLocation, wp);
  PdfDocument pdfDoc = new PdfDocument(writer);
  Document doc = new Document(pdfDoc);

  // Add data to doc
  // close the doc
  //close the writer
}
)

通过这种方法,我尝试添加 document.add(new AreaBreak(AreaBreakType.NEXT_PAGE)); 但这不会成功。

除此之外,我看到了一些使用 ByteArrayOutputStream 的方法,但我找不到好的解决方案。

谁能帮我解决这个问题?

我觉得您需要在循环外初始化 PdfDocument 以便创建单个文档。

添加分页符没有帮助,您可以使用

创建新页面
PdfDocument pdfDoc = new PdfDocument(writer);
// Adding an empty page 
pdfDoc.addNewPage();

参考: https://www.tutorialspoint.com/itext/itext_creating_pdf_document.htm

也值得检查 addPageaddNewPage https://api.itextpdf.com/iText7/java/7.0.0/com/itextpdf/kernel/pdf/PdfDocument.html#addPage-com.itextpdf.kernel.pdf.PdfPage-