直接进行PDF编辑然后删除编辑仍然会使pdf损坏

时间:2017-07-27 06:30:01

标签: pdf

我的PDF看起来很好,直到我编辑它,现在它甚至在我拿出我的编辑后仍然被破坏了。文件差异程序说这两个文件是相同的,但只有一个文件显示信息。

重现:

1)打开PDF并确保其中有内容

2)在文本编辑器中打开PDF并在顶部添加文本

3)正常打开PDF并且它是空的

4)删除在步骤2中添加的文本

5)尽管有SAME文件内容,PDF仍然存在损坏

如果我将PDF中的代码复制并粘贴到另一个文件并尝试打开它,也会发生这种情况。它不会打开。

有没有办法能够将文本添加到PDF并使其不会损坏?

1 个答案:

答案 0 :(得分:3)

PDF是二进制格式。即使它看起来很文字,但不是文字。特别是PDF文件通常包含二进制数据流,例如用于图像或嵌入字体或压缩的任意内容。此外,PDF依赖于PDF对象,从交叉引用表中指出的偏移量或文件中的流开始。

但是,许多文本编辑器不仅会将您键入的更改应用于文档,还会执行其他操作,例如统一换行符(DOS CRLF或Unix LF或Max CR),替换它们无法解释的字节序列一个特殊字符(例如Unicode REPLACEMENT CHARACTER)或完全丢弃它们等等。

前者(统一换行符)移动数据而不更新交叉引用信息,使其无效。如果解释为换行符的字节实际上是二进制流数据的一部分,则流数据也会被损坏。

后者(字节序列替换)通常会损坏PDF中的流内容,压缩数据或其他敏感的二进制数据无法修复。根据序列长度,这也会移动数据,从而使交叉引用无效。

因此,使用文本编辑器编辑PDF通常是打破PDF的可靠方法。

  

有没有办法能够将文本添加到pdf并使其不会损坏?

是的,使用PDF感知软件,例如Adobe Acrobat但也有其他人。如果您更喜欢编程方法,请使用通用的PDF库。许多编程平台都有这样的库。

对于极少数类型的更改,人们也可以使用十六进制编辑器(只替换一些字节,不插入或删除任何内容),但你真的应该知道你在做什么。