我想向 PDF 文件的每一页添加一段文本。 This answer in SO工作正常。但是,文本被添加到页面顶部。我想将文本添加到每个页面的底部。我该怎么做?
这是代码的相关部分。
while (iteratorPDFReader.hasNext()) {
PdfReader pdfReader = iteratorPDFReader.next();
// Create a new page in the target for each source page.
while (pageOfCurrentReaderPDF < pdfReader.getNumberOfPages()) {
document.newPage();
pageOfCurrentReaderPDF++;
currentPageNumber++;
page = writer.getImportedPage(pdfReader, pageOfCurrentReaderPDF);
cb.addTemplate(page, 0, 0);
document.add(new Paragraph("My Text here")); //As per the SO answer
}
pageOfCurrentReaderPDF = 0;
}
该代码是一个函数的一部分,该函数接受一个文件夹,读取其中的 PDF 文件并将它们合并为一个文件。因此,我想在上面的循环本身中添加文本,而不是再次迭代该文件。
最佳答案
如果你想自动添加内容到每个页面,你需要一个页面事件。 这在我的书“iText in Action - Second Edition”的第5章中有解释。 如果您没有这本书的副本,可以引用示例here 。 您还可以通过查找关键字Header / Footer来找到解决方案.
您所指的示例乍一看似乎不正确。当然,您可以使用“两遍”,一个用于创建内容,另一个用于添加页眉或页脚,但建议的解决方案与推荐的解决方案不同:http://itextpdf.com/examples/iia.php?id=118
您正在复制问题中的错误:您到底为什么要将刚刚创建的文档导入到新文档中,从而丢弃您添加到该文档中的所有可能的交互性?这根本没有意义。令人难以置信的是,这个答案得到了这么多的赞成票。我是 iText 的原始开发者,我对这个答案一点也不满意!
就您而言,可能不需要先在内存中创建文档,然后再添加页脚。看看http://itextpdf.com/examples/iia.php?id=104
您需要创建一个 PdfPageEvent
实现(例如使用 PdfPageEventHelper
),并且需要实现 onEndPage()
方法。 p>
记录的警告:
- 不要使用
onStartPage()
添加内容, - 不要向传递给页面事件的
Document
对象添加任何内容, - 除非您指定了不同的页面大小,否则左下角的坐标为
x = 0; y = 0 。添加页脚时需要考虑到这一点。页脚的 y 值低于页眉的 y 值。
有关更多信息:请查阅我的书。
关于java - iText - 将内容添加到现有页面的底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13465657/