为什么组合 pdf2ps / ps2pdf 会缩小 PDF?

Why does the combination pdf2ps / ps2pdf shrink the PDF?

在研究如何压缩一堆里面有图片的 PDF 时(最好是无损方式,但我会满足于有损)我发现很多人建议这样做:

$ pdf2ps file.pdf
$ ps2pdf file.ps

这行得通!生成的文件更小,至少看起来还不错。

推荐此程序的人很少是基于专业知识或知识背景的——而是基于直觉。

通过 PostScript 来回生成新 PDF 的绕路(也称为 "refrying a PDF")永远不会为您提供最佳结果。有时候有用,f.e。在原始 PDF 根本未打印或无法由其他应用程序处理的情况下。但这些情况非常罕见。

无论如何,此 "roundtrip" 转换绝不会生成与最初相同的 PDF 文件。

此外,pdf2psps2pdf 工具根本不是一个独立的工具:它们只是围绕 Ghostscript(gsgswin32c.exe)的简单包装脚本命令行。您可以通过以下方式自行检查:

cat $(which ps2pdf)
cat $(which pdf2ps)

这还将显示这些简单包装器用于相应转换的(默认)参数。

如果你运气不好,你会安装一个古老的Ghostscript。然后由 pdf2ps 生成的 PostScript 将是 Level 1 PS,对于许多字体来说这将是 "lossy" 可以被更现代的 PDF 文件使用,从而导致先前矢量的光栅化字体。不完全是您想要查看的输出...

既然这两个工具都在使用 Ghostscript(但在你的背后),你最好自己 运行 Ghostscript.这使您可以更好地控制它使用的参数。特别有利的是,通过这种方式您可以获得 直接 PDF->PDF 转换,而无需通过中间 PostScript 文件格式绕行。

这里有一些答案可以给您一些提示,告诉您可以使用哪些参数来以半控制的方式减小输出 PDF 中的文件大小:

  • Optimize PDF files (with Ghostscript or other) (Whosebug)
  • Remove / Delete all images from a PDF using Ghostscript or ImageMagick (Whosebug)