批量调整和压缩 PDF 文件

Sta*_*tan 17 windows linux compression pdf

我需要一种方法来缩小和压缩成批的 PDF 文件。我更喜欢在 Windows 上执行此操作,但如果它意味着更流畅的工作流程,Linux 会很好。

我知道有诸如 NitroPDF 和 Acrobat 之类的程序可以让您完成此操作,但恐怕必须逐个文件地完成。这些程序也不便宜,我不想购买它们只是为了使用一两个功能。

背景信息:我使用 CamScanner 将收据和发票数字化以进入账户 (FreeAgent)。CamScanner pdf 都是 A4 大小的,多页的通常超过 2MB 的附件限制。

小智 21

因此convert,ImageMagick 将生成光栅化的 PDF,许多人会对保持矢量图形和文本不变感兴趣,因此只压缩嵌入的图像。进行压缩的好方法是使用gsfrom使用包ghostscript示例:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=out.pdf in.pdf
Run Code Online (Sandbox Code Playgroud)

在上面的命令参数中:-dPDFSETTINGS=/ebook很重要。它可以有 3 个值:

-dPDFSETTINGS=/screen   (screen-view-only quality, 72 dpi images)
-dPDFSETTINGS=/ebook    (low quality, 150 dpi images)
-dPDFSETTINGS=/printer  (high quality, 300 dpi images)
-dPDFSETTINGS=/prepress (high quality, color preserving, 300 dpi imgs)
-dPDFSETTINGS=/default  (almost identical to /screen)
Run Code Online (Sandbox Code Playgroud)


Bob*_*Bob 17

我在这里推荐一个命令行工具,它可以很容易地用 Windows、Linux、OS X 等内置脚本语言的循环进行批处理。


ImageMagick支持 PDF 并且有一个转换工具resize选项。我个人从未使用过它,但您可以尝试使用它。

您也可以使用该compress选项(有一个例子在这里):

旋转 PDF

$ convert -rotate 270 -density 300x300 -compress lzw in.pdf out.pdf
Run Code Online (Sandbox Code Playgroud)

这假设是 TIFF 支持的 PDF。密度参数很重要,否则 ImageMagick 会对图像进行下采样(出于某种原因)。添加压缩选项有助于保持 PDF 的整体大小更小,而不会降低质量。

对于多页 PDF,您可能需要使用pdftk,然后使用mogrify来自 ImageMagick 的原位转换每个页面:

$ pdftk in.pdf burst
$ mogrify -rotate 270 -density 300x300 -compress lzw pg_*.pdf
$ pdftk pg*.pdf cat output out.pdf
$ rm pg*.pdf
Run Code Online (Sandbox Code Playgroud)


要使用 ImageMagick 转换 PDF 文件,您需要安装GhostScript


ImageMagick 可以转换多页 PDF。虽然mogrify将转换到位,但我建议您使用,convert以便您可以保留原件以防万一。


我已经对您提供的示例 PDF 进行了一些测试。这对我来说效果很好:

convert -density 200 -compress jpeg -quality 20 test.pdf test2.pdf
Run Code Online (Sandbox Code Playgroud)

密度默认为72DPI。通过将其设置得更高,我们可以获得更高的分辨率,从而获得可接受的质量。它看起来不错150,而且有点小,但如果你想满足一系列 PDF200应该可以工作。

JPEG压缩要么自动选择水平或默认92上的刻度1100100是最好的。将它设置为20,它看起来几乎和原来的一样好(有点模糊,底部的小文字有点难以阅读,但无论如何它都是原来的)。

这些选项将您的1.7MB样本降低到0.5MB,同时保持其可读性。你可以稍微试验一下。

如果您想要更小的尺寸(文件和图像/PDF 的尺寸),您可以使用-resize #%,例如-resize 75%. 不过,在您的示例 PDF 中,这使得底部的小字几乎无法阅读。

如果您的空间仍然紧张,特别是对于多页 PDF,您可以通过将文件添加到 ZIP(或其他)存档来进一步压缩。这使该测试 PDF 的文件大小降低到 0.43MB(降低 JPEG 压缩质量会产生更剧烈的影响)。您还可以pdftk按照@glallen在他的编辑中建议的那样将 PDF 文件拆分为多页,或者拆分存档并在另一端重新组合。

2MB 也是一个相当小的附件限制,您可能需要查看其他电子邮件提供商。根据内存,GMail 为每封电子邮件提供超过 10MB。

这些选项以及更多选项在他们的网站上都有完整记录。