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

标签 java itext

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

相关文章:

java - 使用 Optional 查找层次结构的根

java - 动态 JFrame - 更改 JFrame 内容

java - 使用 Java 启用 PDF 快速 Web 查看?

c# - 如何使用 iTextSharp 4.0.2 设置 100% 的默认缩放?

Java字符串到日期更改时区

java - jSTL:无法解析表达式 [${item.class.name == 'List' }]

java - 如何忽略 .gitignore 文件中的 .idea 文件夹?

c# - 打印为 PDF 时字符串格式中的退格键

c# - iTextSharp - 如何打开/读取/提取文件附件?

java - 如何处理具有相同名称的表单字段?