Linux 如何使用 ghostscript (GS) 获取 PDF 版本

How to get PDF Version with ghostscript (GS) on Linux

我可以更改 PDF 版本:

 gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf

如何使用 gs 获取 input.pdf 的原始 PDF 版本?

您不是 'changing' 那里的 PDF 版本。当您使用 Ghostscript 解释 PDF 文件时,它不只是玩弄它的一部分。它完全解释输入,创建一系列图形基元。

然后将这些发送到 'device' 进行处理。对于呈现设备(例如 png16m),这些被呈现为位图。对于 pdfwrite 设备,它采用这些原语并将它们转换为新的 PDF 操作。输出在视觉上应该是相同的,但它与原始文件中的 PDF 操作顺序不同。

所以您实际上是在创建一个全新的 PDF 文件,它与 PDF 规范的 1.4 版兼容。在这种情况下,这意味着它不使用规范的更高版本的任何功能,它也可能不使用任何 1.4 功能,只是保证不需要更高版本。

您不需要 GS 来找出 PDF 文件的现有级别,它在文件的 header 中。 PDF 文件应以 '%PDF-x.y' 开头,但如果 header 出现在文件的前 1024 字节 (IIRC) 中的任何位置,它们将被视为有效。 x 是主要版本,y 是此 PDF 文件所需规范的次要版本。所以 1.4 文件将开始 %PDF-1.4

但是,您应该知道一些 PDF 文件是 'economical with the truth',尤其是那些经过编辑的文件,并不总是声明需要正确的版本。