如何在现有的pdf中附加数据?

时间:2017-10-26 14:23:02

标签: java pdf itext itext7

我试图在Java应用程序中使用iText 7向PDF添加一些数据。

我没有成功在附加模式下打开pdf。我在网上寻找一些解决方案,但都关注iText5(并使用不再存在的类。)

我该怎么办?

1 个答案:

答案 0 :(得分:1)

具体取决于你想要的东西:

  1. 合并两份文件:
    https://developers.itextpdf.com/content/itext-7-examples/itext-7-merging-pdf-documents

  2. 在文档末尾添加内容:
    与之前类似,您可以创建一个新文档(到字节输出流),并将两者合并在一起

  3. 将内容添加到现有页面:
    很难做到,因为这通常需要重新布局文档,目前没有PDF引擎可以做。

  4. 填写文档中的表单:
    https://developers.itextpdf.com/content/itext-7-examples/itext-7-form-examples

  5. 在文档中添加附件:
    https://developers.itextpdf.com/examples/miscellaneous/clone-embedded-files

  6. 额外(3):

    在现有内容的中间向PDF添加内容非常困难。 要了解原因,这里有一些关于如何在内部构建PDF文档的信息:

    • PDF文档包含供查看者呈现的说明,而不是纯文本
    • 说明及其参数分组在“对象”
    • 可以压缩对象以减小文件大小
    • PDF文档保留所有这些对象的内部索引,这称为XREF表
    • PDF文档中的索引使用字节偏移来告诉渲染器在哪里(在文件中)可以找到对象

    假设您想要更改(或添加)某些内容。 你搞乱了XREF中的所有字节偏移。没有观众可以再次找到任何物体 然后事实是PDF不包含布局信息。如果您添加了新内容,并且现有内容需要移动,则需要布局信息(哪些对象构成句子?哪些句子构成段落?)。只有通过布局信息才能合理地重新布局文档。