【问题标题】:how to append data in an existing pdf? [closed]如何在现有的pdf中附加数据? [关闭]
【发布时间】:2017-10-26 14:23:02
【问题描述】:

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

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

我能做什么?

【问题讨论】:

    标签: java pdf itext itext7


    【解决方案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

    额外(3):

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

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

    假设您想更改(或添加)某些内容。 你会弄乱外部参照中的所有字节偏移。没有观众能够再次找到任何对象。
    然后是PDF不包含布局信息的事实。如果您添加了一些新内容,并且需要移动现有内容,则需要布局信息(哪些对象构成一个句子?哪些句子构成一个段落?)。只有拥有布局信息,您才能明智地重新布局文档。

    【讨论】:

    • 应该是3号,很难做到吗?
    • 如果我得到最后一页的文本,将其删除,然后将新文本添加到 PdfPage 并将其附加到我的文档底部?
    • @thenoobdeveloper 这是菜鸟因为不懂PDF而做不到的事情,而专家不会因为懂PDF而做的事情。
    • @BrunoLowagie 措辞优美
    • @JorisSchellekens 我们可以把这句话放在一个框架里,然后挂在办公室的墙上:D
    猜你喜欢
    • 2013-08-08
    • 2012-03-24
    • 2013-05-19
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    相关资源
    最近更新 更多