Dis*_*ame 5 php ghostscript imagick
我有一些需要裁剪的 PDF 文件(裁剪到修剪框等),我可以使用以下命令进行裁剪
convert -define pdf:use-trimbox=true -density 300 original.pdf outcome.pdf
Run Code Online (Sandbox Code Playgroud)
它可以完成这项工作,但是如果没有原始 PDF 那样清晰,结果.pdf 的质量。当我在我的桌面软件 (Acrobat Pro) 上裁剪它们时,结果质量相同,但在 ImageMagick 中,我无法在结果中保持相同的质量。
我的问题是如何在不影响质量的情况下裁剪 pdf 页面?
数周以来,我一直在搜索和尝试不同的设置,但没有成功。
最有可能的问题是 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
Run Code Online (Sandbox Code Playgroud)
之间的第一部分-c,并-f告诉pdfwrite设备使用FlateEncode的彩色图像,默认为JPEG,使用Flate将确保你没有得到量化涂抹两次。
-c和之间的第二部分-f告诉 pdfwrite 设备将 CropBox 写入文件并将其设为 0,0 到 100,100。单位是PDF中的常用单位;1/72 英寸,您可以使用小数值。
我相信还有其他工具可以做到这一点,甚至可能更容易。