在Java中将PDF读作字符串

时间:2012-09-06 11:03:48

标签: java parsing pdf

所以,我有一个程序,它是一种文本编辑器。我需要它的输出格式为pdf,但我还需要能够再次编辑该PDF。由于我的程序输出从未非常复杂,并且由于我的程序是创建PDF的程序,我可以直接从创建的PDF读取,但我认为将其他文件附加到PDF将更容易阅读。

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

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

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

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

2 个答案:

答案 0 :(得分:2)

PDF不是一种用于编辑和添加附件的格式(隐藏或不是我甚至不确定会工作的)是一种不确定的格式。假设你的伎俩有效:

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

  • 如果PDF阅读器更新其功能以支持无效语法,该怎么办? 这意味着你的文件突然显现,打败了你的意图。

最好的方法是:

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

或者使用Jonathan的解决方案。这适用于在本地存储文本。

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

答案 1 :(得分:1)

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