为什么组合 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 文件。
此外,pdf2ps
和 ps2pdf
工具根本不是一个独立的工具:它们只是围绕 Ghostscript(gs
或 gswin32c.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)
在研究如何压缩一堆里面有图片的 PDF 时(最好是无损方式,但我会满足于有损)我发现很多人建议这样做:
$ pdf2ps file.pdf
$ ps2pdf file.ps
这行得通!生成的文件更小,至少看起来还不错。
- 这是如何/为什么起作用的?
- 在此过程中我可以调整哪些设置?
- 如果有一些有损转换,那是哪一个?
- 问题在哪里?
推荐此程序的人很少是基于专业知识或知识背景的——而是基于直觉。
通过 PostScript 来回生成新 PDF 的绕路(也称为 "refrying a PDF")永远不会为您提供最佳结果。有时候有用,f.e。在原始 PDF 根本未打印或无法由其他应用程序处理的情况下。但这些情况非常罕见。
无论如何,此 "roundtrip" 转换绝不会生成与最初相同的 PDF 文件。
此外,pdf2ps
和 ps2pdf
工具根本不是一个独立的工具:它们只是围绕 Ghostscript(gs
或 gswin32c.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)