批量调整大小并压缩PDF文件


15

我需要一种缩小和压缩一批PDF文件的方法。我更愿意在Windows上执行此操作,但是Linux可以使工作流程更顺畅。

我知道有NitroPDF和Acrobat之类的程序可以帮助您完成此任务,但恐怕它必须逐个文件地完成。这些程序也不便宜,我宁愿不要购买它们,只是为了使用一个或两个功能。

背景信息:我使用CamScanner将收据和发票数字化以输入帐户(FreeAgent)。CamScanner pdf均为A4大小,多页pdf经常超过2MB附件限制。

Answers:


15

我在这里建议使用命令行工具,该工具可以轻松地与Windows,Linux,OS X等中的内置脚本语言中的循环一起批处理。


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

您还可以使用该compress选项(此处有一个示例):

旋转PDF

$ convert -rotate 270 -density 300x300 -compress lzw in.pdf out.pdf

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

对于多页PDF,您可能需要使用pdftk,然后使用mogrifyImageMagick来转换每个页面:

$ pdftk in.pdf burst
$ mogrify -rotate 270 -density 300x300 -compress lzw pg_*.pdf
$ pdftk pg*.pdf cat output out.pdf
$ rm pg*.pdf


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


ImageMagick可以转换多页PDF。虽然mogrify可以原地转换,但我建议您使用它,convert以便在发生意外的情况下保留原件。


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

convert -density 200 -compress jpeg -quality 20 test.pdf test2.pdf

密度默认为72DPI。通过将其设置得更高,我们可以获得更高的分辨率,从而获得可接受的质量。它看起来不错150,但稍小一些,但是如果您要满足一定范围的PDF,200应该可以使用。

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以上的空间。

这些选项以及更多选项已在其网站上完整记录。


这似乎是一种极好的方法,但是我认为我的pdf不是TIFF支持的。CamScanner首先拍摄JPEG照片,然后将其转换为PDF以导出。处理这些PDF确实确实像博客文章所指示的那样对它们进行了下采样,无论压缩如何。从PDF转换为TIFF,然后再转换为PDF似乎可以保留质量,但会增大文件大小,并弄乱了页面大小和密度。
斯坦(Stan)2012年

@paganompu据我了解,您想减小文件大小。压缩为JPEG怎么样?结果如何resize?您有一个(不敏感的)示例文件可以玩吗?下采样是否可以接受?
鲍勃

JPEG会很好,但是我需要上传多页文档,每个帐户条目只能有一个附件。下采样很严重:使用无损压缩进行转换后,测试文档不可读。
斯坦(Stan)2012年

@paganompu我已经进行了一些实验,并使用了有效的命令更新了答案。请参阅此处以对文件进行测试。
鲍勃2012年

该命令就像一个魅力。好像我的“下采样”是由于省略了density。我发誓我可以阅读并遵循说明!现在有点尴尬:S谢谢您抽出宝贵的时间来帮助我Bob
Stan 2012年

19

因此,convert通过ImageMagick可以生成光栅化的PDF,并且许多人都希望保持矢量图形和文本不变,因此仅压缩嵌入式图像。因此,替代压缩的好方法是使用gs包装ghostscript示例:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=out.pdf in.pdf

在上述命令参数中:-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)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.