1

所以,我有一个程序,它是一种文本编辑器。我需要它的输出格式为 pdf,但我需要再次编辑该 PDF。由于我的程序输出从来都不是很复杂,而且由于我的程序是创建 PDF 的程序,因此我可以直接从创建的 PDF 中读取,但我认为将另一个文件附加到 PDF 会更容易阅读。

但是,我不希望用户看到文件附加到 PDF。

我在某处读过一次,您可以通过更改为来欺骗 PDF 阅读/EmbeddedFiles/Embeddedfiles。这样他们就不会检测到他们正在处理的 PDF 文件中有附加文件。

问题是,我如何阅读 PDF 以进行更改,然后在编辑之前再次将其还原?

我不认为 PDF 库会帮助我,因为我试图“破坏”PDF。我想我应该将它解析为某种字符串,然后查找我想要更改的子字符串。但是我对PDF格式太不熟悉了,不知道它是否真的那么简单,或者有没有特定的方法可以做到这一点......

4

2 回答 2

2

PDF 不是一种用于编辑和附加附件的格式(隐藏或不隐藏,我什至不确定是否会起作用)有点不确定。假设您的技巧有效:

  • 这是一个有效的 PDF 吗?您可能想欺骗读者,但您会创建无效的 PDF,这比您尝试使用的方法更让我担心。

  • 如果 PDF 阅读器更新其功能以支持无效语法怎么办?这意味着您的文件突然可见,违背了您的意图。

最好的方法是:

让用户创建它的文档。将文本存储在程序文件夹中。创建 PDF。编辑时,只需根据 PDF 的标题加载文本文档(或其他)。再次强调,PDF 不是一种编辑格式。

或者使用乔纳森的解决方案。它可以在本地存储文本。

无论哪种方式,都不希望破坏 PDF 文件。

于 2012-09-06T12:11:52.060 回答
1

如果您只是创建自己的二进制格式版本并将其称为 PDF,那么您可以尝试将“自定义”条目添加到 PDF 文件的任何字典对象,并将数据流关联到该条目。由于该条目将超出 PDF 规范,因此所有(实施良好的)读者应该能够忽略它。
您可以使用PdfDictionary.put对 iText 执行此操作,例如,您可以将非标准数据添加到 Catalog 字典。

于 2012-09-06T14:01:00.620 回答