gpt4 book ai didi

java - iText - 将内容添加到现有页面的底部

转载 作者:行者123 更新时间:2023-12-01 07:34:48 30 4
gpt4 key购买 nike

我想向 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/




30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com