作弊条:将不规则尺寸的图片转换成信纸大小的 PDF
在日常文档处理中,我们时常会遇到需要将不规则尺寸的 PDF 文件调整为北美标准信纸大小(8.5英寸 x 11英寸)的需求,特别是在处理原始扫描的 PDF 时。本文将介绍如何借助 ImageMagick 和 GhostScript 软件来完成此转换,并确保文件保持较小的体积和清晰的质量。
本文假定输入的文件名为 input.pdf,只有 1 页,四边已 crop 好,文字内容周围留有足够的空白、无需进一步调整,直接缩放不会显著影响质量。
具体步骤
1. 将 PDF 转换成无损格式的高分辨率 TIFF 图片
使用以下命令将 PDF 文件转换为 300 DPI 的 TIFF 格式:
$ convert input.pdf -density 300 -resize 2550x3300 temp.tiff
此命令生成的 temp.tiff 文件尺寸最大为 2550x3300。其中,“宽为 2550 像素”及“高为 3300 像素”两个条件至少满足一条。将原始 PDF 转换为精度为 300 DPI 的无损 TIFF 图片格式,对于大部分印刷文本、图片需求,已足够清晰,并避免压缩过程中图像质量的损失。
2. 将调整好尺寸的 TIFF 图片转换成 PDF
$ convert temp.tiff -gravity north -extent 2550x3300 output.pdf
其中,-gravity north 使文件顶部对齐。也可以选择其他方向(northwest、center 较为常用)。-extent 参数补足 PDF 尺寸,原文件缺失的部分,默认以白色补足。
3. 压缩 PDF 文件
第二步生成的 PDF 文件尺寸较大(约 20MB),不便于传输、应用。可用 GhostScript 工具重新采样、压缩。
$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output_compressed.pdf output.pdf
其中 PDFSETTINGS 可选的参数有:
- /screen: 72 DPI
- /ebook: 150 DPI
- /printer: 300 DPI
- /prepress: 高分辨率并且包含色彩信息
- /default: 默认,效果介于 /screen 和 /printer 之间。
此步骤结束后输出的文件 output_compressed.pdf 即符合打印要求的文档。如果 PDF 内容以黑白文字为主,大小应在 1MB 以内。
注 1:如希望修改 ImageMagick 生成的 PDF 中的默认 metadata,可以这样操作:
首先建立一个名为 metadata.pdfmark 的文本文件,参考内容如下:(请适当修改)
[ /Title (Frank’s Very Important Document)
/Author (Frank Lin)
/Subject (Frank’s experiments with pdfmark)
/Creator (https://linshuang.info/)
/ModDate (D:20241101000000+01'00’)
/Producer (A ‘pdfmark’ trick with Ghostscript)
/Keywords (Metadata, Ghostscript, PDF)
/CreationDate (D:20241101000000+01'00’)
/DOCINFO
pdfmark
(注意,文件末尾是“pdfmark”,不能以 ] 关闭)
将第三步中的 gs 命令后面增加一输入文件,即可覆盖 output.pdf 中的 metadata。
$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output_compressed.pdf output.pdf
生成的文件在 Chrome 中看起来是这样的:
注 2:对于多页的 PDF,可写脚本对每页内容按类似方法处理,具体步骤从略。