Don*_*lio 14 pdf imagemagick imagemagick-convert
我需要自动减小某些用户上传的 pdf 的大小,以便可以通过电子邮件发送它们。
我有一个小 imagemagick oneliner 可以减少我的尺寸:
convert -density 120 -quality 10 -compress jpeg original.pdf output.pdf
Run Code Online (Sandbox Code Playgroud)
基本上以 jpg 格式导出 pdf 的每一页,更新密度和质量,并将页面重新打包到新的 PDF 中。
这工作得很好,除了使用这个命令有时文件最终会变大,我需要重新运行调整密度和质量以获得最小的大小,使 pdf 文档中的文本仍然可读。
我不确定如何自动化它。我想使用识别来获取文件的特征(高度宽度密度......)并执行诸如一半的数字或类似的操作。但我正在努力获取有关文件的信息。
有什么建议么?
谢谢,
-compression jpeg必须明确提交,否则您的 PDF 中将得到未压缩的图像资源:$ cd ~/Pictures/Scans/
$ pdfimages -list Test.pdf
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
1 0 image 4961 7016 icc 3 8 jpeg yes 5 0 600 600 5907K 5.8%
$ convert -density 150 -quality 60 Test.pdf Test-150-060.pdf
$ pdfimages -list Test-150-060.pdf
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
1 0 image 1240 1754 rgb 3 8 image no 8 0 150 150 6397K 100%
1 1 smask 1240 1754 gray 1 8 image no 8 0 150 150 33.5K 1.6%
$ convert -density 150 -quality 60 -compress jpeg Test.pdf Test-150-060-jpeg.pdf
$ pdfimages -list Test-150-060-jpeg.pdf
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
1 0 image 1240 1754 rgb 3 8 jpeg no 8 0 150 150 42.5K 0.7%
1 1 smask 1240 1754 gray 1 8 image no 8 0 150 150 33.5K 1.6%
Run Code Online (Sandbox Code Playgroud)