我正在尝试从Java ResultSet创建PDF报告.如果报告只有一页,我在这里没问题.问题来自报告可能长达一到十页的事实.现在,我有这个来创建一个单页文档:
PDDocument document = new PDDocument();
PDPage page = new PDPage(PDPage.PAGE_SIZE_LETTER);
document.addPage(page);
PDPageContentStream content = new PDPageContentStream(document,page);
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如何在需要时动态创建页面.是否有一个面向对象的答案盯着我的脸,我只是看不到它?
Liq*_*mer 15
正如我所料,答案就是盯着我,我只需要有人为我指出.
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();
Run Code Online (Sandbox Code Playgroud)
感谢@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();
Run Code Online (Sandbox Code Playgroud)
提示:使用大小/高度等字体参数和剩余媒体框高度来确定页面的最后一行.
| 归档时间: |
|
| 查看次数: |
17943 次 |
| 最近记录: |