使用PDFBox动态创建多页面文档

我正在尝试从Java ResultSet创建PDF报告。 如果报告只有一页,我在这里没问题。 问题来自报告可能长达一到十页的事实。 现在,我有这个来创建一个单页文档:

PDDocument document = new PDDocument(); PDPage page = new PDPage(PDPage.PAGE_SIZE_LETTER); document.addPage(page); PDPageContentStream content = new PDPageContentStream(document,page); 

所以我的问题是,如何根据需要动态创建页面。 是否有一个面向对象的答案盯着我的脸,我只是看不到它?

正如我所料,答案就是盯着我,我只是需要有人为我指出。

 PDDocument document = new PDDocument(); PDPage page = new PDPage(PDPage.PAGE_SIZE_LETTER); document.addPage(page); PDPageContentStream content = new PDPageContentStream(document,page); //generate data for first page content.close(); //if number of results exceeds what can fit on the first page page = new PDPage(PDPage.PAGE_SIZE_LETTER); document.addPage(page); content = new PDPageContentStream(document,page); //generate data for second page content.close(); 

感谢@mkl的回答。

使用PDFBox创建多页PDF文档:

(a)创建新页面,新内容流,向左上移动,开始写作。 在写每个单词时检查所需空间是否不超过媒体盒宽度。 如果交叉,则移动到最左边的下一行并开始写入。 继续写到页面的最后一行。

(b)关闭contentStream并在写入操作到达当前页面的最后一行时将当前页面添加到文档中,

(c)重复步骤(a)和(b),直到写入最后一条记录/行/行。

  PDDocument document = new PDDocument(); PDFont font = PDType1Font.HELVETICA; //For Each Page: PDPage page = new PDPage(PDPage.PAGE_SIZE_A4); PDPageContentStream contentStream = new PDPageContentStream(document, page); contentStream.setFont(font, 12); contentStream.beginText(); contentStream.moveTextPositionByAmount(100, 700); contentStream.drawString("PDF BOX TEXT CONTENT"); contentStream.endText(); contentStream.close(); document.addPage(page); //After All Content is written: document.save(pdfFile); document.close(); 

提示:使用字体参数(如大小/高度)和剩余媒体框高度来确定页面的最后一行。