如何查看和编辑PDF文件的代码

如何查看和编辑PDF文件的代码

我想知道如何查看和编辑PDF文件的代码?

  1. 通过查看,我不想看到二进制格式,所以我想hexdump可能不是我想要的。我尝试过gedit,但没有可以使用编码方法来解码PDF内容。

  2. 通过编辑,我想搜索/Fit并将它们更改为 /XYZby 例如 sed。但我的命令sed s/\/Fit/\/XYZ/ < 1.pdf > 2.pdf似乎没有像我预期的那样改变 PDF 的外观,尽管它没有报告任何错误。我想知道是否sed可以像纯文本一样处理 PDF 文件?

我的问题的背景可以从这个问题。我的操作系统是 Ubuntu 10.10。

答案1

关于您的第一个问题(“查看源代码,但没有二进制文件”):您可以使用一些选项来解压缩附加到许多对象的内部二进制流。

我最喜欢的工具是量子PDF,可在所有主要操作系统平台上使用。以下命令解压所有流和所有对象流:

 qpdf --qdf --object-streams=disable orig.pdf expanded.pdf

现在您可以在任何文本编辑器中打开 PDF。 (其中可能仍然存在一些二进制 blob:例如,字体文件和 ICC 配置文件,这对于 QPDF 扩展来说没有意义)。

重新压缩再次expanded.pdf编辑后,您可以运行:

 qpdf expanded.pdf orig2.pdf

(手动编辑 PDF 时要小心!您需要了解很多有关其内部语法的知识才能正确执行此操作。一旦添加或删除单个字节,您可能会从 PDF 阅读器收到错误消息,他们可能无法再编辑打开它,因为 PDF 内部目录已损坏,这是基于字节偏移计算的,不过,只需FitXYZ字符串替换就可以了...)

答案2

您可以使用sed二进制文件(至少是 GNU sed;某些实现可能会遇到包含空字符或不以换行符结尾的文件的问题)。但您使用的命令仅替换/Fit每行中第一次出现的 ,并且行在 PDF 文件中几乎没有意义。您需要替换所有出现的情况:

 sed s/\/Fit/\/XYZ/g

/Fit如果它后面没有单词成分,则仅替换会更强大(例如不替换/Fitness;我不知道您的文件是否包含/Fit会导致麻烦的出现)。这是一种方法:

perl -pe 's!/Fit\b!/XYZ!g'

答案3

使用 LibreOffice 或 OpenOffice 打开 PDF、查看它、替换内容、编写新 PDF 等。我认为,如果有大量文档需要处理,您甚至可以通过命令行或以编程方式使用它。

请注意,PDF 来自一些源(例如扫描仪)通常将页面包含为图像而不是文本,因此您将无法使用它们进行搜索和替换。

答案4

sed是面向行的,这使得它不太适合二进制文件,二进制文件的结构是块而不是行。
尝试使用 bbe (bbe-.sourceforge.net) 代替。

或者,Emacs(GNU 和 XEmacs)和 vim 都可以无缝打开 PDF 文件。当然,它的打印效果不是很漂亮,因为它是混合文本和二进制的,但它足以满足您的编辑目的。
有一个pdf文件vim 插件,让一切变得更简单,下载这里(压缩文件)。
您可能知道,上述两个编辑器都具有强大的搜索和替换功能。

另外,将 PDF 转换为QDF模式before 使编辑 PDF 文件变得非常容易。

相关内容