我想使用命令行实用程序将 PDF 从版本 1.5 转换为 1.4。
有沒有可用的?
答案1
# gs -sDEVICE=pdfwrite -dCompatibilityLevel=<VERSION> -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
刚刚测试过并且运行良好,我现在将发布一些输出。
[14:08:41]lee@barlow:~/superuser # pdfinfo org_1-4.pdf
Title: CV 2009
Producer: Prince 7.0 alpha 16 (www.princexml.com)
Tagged: no
Pages: 3
Encrypted: no
Page size: 595 x 842 pts (A4)
File size: 51793 bytes
Optimized: no
PDF version: 1.4
[14:08:59]lee@barlow:~/superuser # gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=out_1.5.pdf org_1-4.pdf
[14:09:35]lee@barlow:~/superuser # pdfinfo out_1.5.pdf
Producer: GPL Ghostscript 8.64
CreationDate: Wed Aug 19 14:09:34 2009
ModDate: Wed Aug 19 14:09:34 2009
Tagged: no
Pages: 3
Encrypted: no
Page size: 595 x 842 pts (A4)
File size: 60658 bytes
Optimized: no
PDF version: 1.5
答案2
查找 ghostscript 选项,而不是盲目地从其他人那里复制命令(等等),这是值得花时间的。例如-dPDFSETTINGS=/screen
,得票最多的答案(以及许多其他)会降低您的 pdf 质量。
-dPDFSETTINGS=configuration
预设“蒸馏器参数”[...] 使用任何这些预设都将涉及更改输入,因此可能导致 PDF 质量(与输入相比)比仅使用默认值更差。通过完全不设置此参数(或使用 /default)可获得“最佳”质量(其中最佳意味着最接近原始输入)。
此外,有用的选项如下,-dNOPAUSE
由-o
选项。
要将任何 PDF 转换为 1.4 版本,请使用
gs -q -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -o out.pdf in.pdf
仅用于-q
使命令静音。如果您想看到警告(例如缺少字体)等,可以将其省略。
注意:即使没有,Ghostscript 也不会通知您不存在/不支持的版本-q
。例如,如果您指定-dCompatibilityLevel=1.9
(没有 pdf 1.9),您会得到一个 pdf 2.0,但 ghostscript 不会告诉您。我找不到 支持的版本的完整列表-dCompatibilityLevel=
。1.0 似乎不受支持。1.1 - 1.7 可以工作。2.0 也可以工作,但创建的 pdf 不符合标准(尽管它们在 evince 中显示得很好)。
您可以使用 查看书面版本grep -oa '%PDF-...' out.pdf
。
此外,我发现只能使用 创建 PDF/A -dPDFA
。遗憾的是,所有这些选项似乎都没有很好的记录或根本没有记录。