【问题标题】:ImageMagick PDF crop retain qualityImageMagick PDF 裁剪保留质量
【发布时间】: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 页面容器中。换句话说,你的整块肉都变成了碎肉——没有办法取回你的整块肉。 (您必须使用其他避免光栅化的工具。)

标签: php ghostscript imagick


【解决方案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。
    猜你喜欢
    • 2020-02-05
    • 2017-01-09
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多