ImageMagick PDF 裁剪保留质量

Posted

技术标签:

【中文标题】ImageMagick PDF 裁剪保留质量【英文标题】:ImageMagick PDF crop retain quality 【发布时间】:2016-09-25 17:32:04 【问题描述】:

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

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

它可以完成这项工作,但结果.pdf 的质量如果不如原始 PDF 清晰。当我在我的桌面软件(Acrobat Pro)上裁剪它们时,它的质量相同,但在 ImageMagick 中我无法保持相同的质量。

我的问题是如何在不影响质量的情况下裁剪 pdf 页面?

我已经搜索并尝试了数周的不同设置,但没有成功。

【问题讨论】:

ImageMagicks convert` 命令在后台使用 Ghostscript 将(可能)矢量 PDF 页面首先转换为光栅图像。然后它将“修剪框”应用于图像并将整页光栅图像再次包装到 PDF 页面容器中。换句话说,你的整块肉都变成了碎肉——没有办法取回你的整块肉。 (您必须使用其他避免光栅化的工具。) 【参考方案1】:

问题很可能是 ImageMagick 将 PDF 渲染为 Ghostscript 的位图,然后将位图导出到 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 英寸,您可以使用小数值。

我相信还有其他工具可以做到这一点,而且可能更容易。

【讨论】:

【参考方案2】:

您是否尝试过增加密度?这就是目的:

http://www.imagemagick.org/script/command-line-options.php#density

否则试试:

-质量 100

来自: Convert PDF to image with high resolution

【讨论】:

您好,我已经尝试过质量,将密度提高到 600,但仍然不能完美处理 很抱歉,但我在文档中看不到任何其他可能解决此问题的选项。如文档所述,您可以将质量提高到 1024。

以上是关于ImageMagick PDF 裁剪保留质量的主要内容,如果未能解决你的问题,请参考以下文章

Imagemagick / ghostscript将裁剪标记添加到pdf

用于拆分和自动裁剪 PDF 文件的 Bash

ImageMagick Pdf到JPG质量不好

Imagemagick 裁剪不起作用

使用 PHP 和 ImageMagick 将 PDF 转换为高质量的 JPG

ImageMagick 将具有多页的 pdf 转换为高质量的 PNG