ImageMagick PDF 裁剪保留质量

6

我有一些需要裁剪的PDF文件(如裁剪到TrimBox等),可以使用以下命令完成:

convert -define pdf:use-trimbox=true -density 300 original.pdf outcome.pdf

虽然它能完成工作,但是生成的 outcome.pdf 质量不如原始 PDF 那么清晰。当我在桌面软件(Acrobat Pro)上裁剪它们时,结果质量相同,但是在 ImageMagick 中,我无法保持相同的质量。

我的问题是如何在不降低质量的情况下裁剪 PDF 页面?

我已经搜索并尝试了不同的设置几个星期,但没有成功。


ImageMagick的“convert”命令在后台使用Ghostscript将(可能是)矢量PDF页面首先转换为光栅图像。然后它将“trimbox”应用于图像,并将完整的页面光栅图像再次包装到PDF页面容器中。换句话说,你整块肉被转换成了绞肉 - 没有办法恢复你的整块肉。(您必须使用其他避免光栅化的工具。) - Kurt Pfeifle
2个回答

8
最可能的问题是ImageMagick通过Ghostscript将PDF呈现为位图,然后将位图导出为PDF文件。如果原始文件包含JPEG图像,则最有可能出现JPEG图像被应用两次,或者渲染本身就是问题的原因。您最好使用可以简单地将CropBox应用到页面的工具。例如,您可以使用Ghostscript(它还可能以其他方式修改PDF,包括双重JPEG量化,所以请注意)。
gs -sDEVICE=pdfwrite \
   -sOutputFile=cropped.pdf \
   -dBATCH  -dNOPAUSE \
   -c "<</ColorImageFilter /FlateEncode>> setdistillerparams" \
   -f <input.pdf> \
   -c "[ /CropBox [ 0 0 100 100] /PAGES pdfmark" \
   -f

第一个部分介于 -c-f 之间,告诉 pdfwrite 设备使用 FlateEncode 来处理彩色图像,因为默认是 JPEG,使用 Flate 可以确保你不会重复应用量化。
第二个部分介于 -c-f 之间,告诉 pdfwrite 设备将 CropBox 写入文件,并将其设置为 0,0 到 100,100。单位是 PDF 中的常规单位;1/72 英寸,您可以使用分数值。
我相信还有其他工具可以做到这一点,可能甚至更容易。

1

嗨destriff,我已经尝试了提高质量,将密度增加到600,但仍然无法完美处理它。 - Display name
很抱歉,但我在文档中并没有看到任何其他可以解决这个问题的选项。您可以按照文档所说将质量提高到1024。 - Destrif

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接