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

为什么pdf2ps/ps2pdf组合会缩小PDF?,pdf,compression,Pdf,Compression,在研究如何压缩一堆内置图片的PDF时(理想情况下是无损压缩,但我会接受有损压缩),我发现很多人建议这样做: $ pdf2ps file.pdf $ ps2pdf file.ps 这管用!生成的文件较小,看起来至少足够好 如何/为什么这样做 在此过程中,我可以调整哪些设置 如果有一些有损转换,那是哪一个 陷阱在哪里 推荐这一手术的人很少是从专业知识或知识背景出发的,而是基于直觉 通过PostScript生成新PDF并返回(也称为“重新生成PDF”)的迂回过程永远不会给您带来最佳结果。有时它很有

在研究如何压缩一堆内置图片的PDF时(理想情况下是无损压缩,但我会接受有损压缩),我发现很多人建议这样做:

$ pdf2ps file.pdf
$ ps2pdf file.ps
这管用!生成的文件较小,看起来至少足够好

  • 如何/为什么这样做
  • 在此过程中,我可以调整哪些设置
  • 如果有一些有损转换,那是哪一个
  • 陷阱在哪里

推荐这一手术的人很少是从专业知识或知识背景出发的,而是基于直觉

通过PostScript生成新PDF并返回(也称为“重新生成PDF”)的迂回过程永远不会给您带来最佳结果。有时它很有用,例如,如果原始PDF根本没有打印,或者无法由其他应用程序处理。但这些病例非常罕见

在任何情况下,这种“往返”转换都不会产生与最初相同的PDF文件

另外,
pdf2ps
ps2pdf
工具根本不是一个独立的工具:它们只是围绕Ghostscript(
gs
gswin32c.exe
)命令行的简单包装脚本。您可以通过执行以下操作来检查:

cat $(which ps2pdf)
cat $(which pdf2ps)
这还将揭示这些简单包装器用于各自转换的(默认)参数

如果你运气不好,你将安装一个古老的鬼脚本。然后由
pdf2ps
生成的PostScript将为1级PS,这对于许多字体来说是“有损”的,这些字体可以被更现代的PDF文件使用,从而导致以前的矢量字体光栅化。不完全是您想要查看的输出

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

以下是一些答案,可以为您提供一些提示,说明您可以使用哪些参数来以半受控的方式降低输出PDF中的文件大小:

  • (堆栈溢出)
  • (堆栈溢出)

如果您将PDF文件与file.ps进行比较,则生成的PDF文件会发生任何更改?是的,会有大量更改。仅举个例子:原稿是2.9 MB,第一个PS是3.2 MB,压缩PDF是0.5 MB,最后一个PS是3.6 MB…你能发布示例文件吗?我怀疑您在此过程中丢失了字体信息。您可以从最终PDF复制/粘贴文本吗?原稿行吗?文件在显示时看起来是否相同?你试过放大/缩小吗?对不起,我不应该发布那些PDF。检查发现它们基本上是存储在PDF中的JPEG图像(我可以看到伪影),最终结果只是有更多伪影-可能是更低的JPEG质量设置。但是,我希望对这两个命令的工作原理有一个大致的了解。