如果您想优化PDF文件并尽可能减小文件大小,Ghostscript是否是最佳选择?
我需要存储大量PDF文件,因此需要尽可能地优化和减小文件大小。
有人使用过Ghostscript或其他工具吗?
命令行
exec('gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4
-dPDFSETTINGS=/screen -sOutputFile='.$file_new.' '.$file);
如果您想优化PDF文件并尽可能减小文件大小,Ghostscript是否是最佳选择?
我需要存储大量PDF文件,因此需要尽可能地优化和减小文件大小。
有人使用过Ghostscript或其他工具吗?
exec('gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4
-dPDFSETTINGS=/screen -sOutputFile='.$file_new.' '.$file);
-dDownsampleColorImages=true \
-dDownsampleGrayImages=true \
-dDownsampleMonoImages=true \
-dColorImageResolution=72 \
-dGrayImageResolution=72 \
-dMonoImageResolution=72 \
如果您想尝试Ghostscript是否也能够“取消嵌入”所使用的字体(有时可以,有时不行--这取决于嵌入字体的复杂性,以及所使用的字体类型),您可以尝试将以下内容添加到您的gs命令中:
gs \
-o output.pdf \
[...other options...] \
-dEmbedAllFonts=false \
-dSubsetFonts=true \
-dConvertCMYKImagesToRGB=true \
-dCompressFonts=true \
-c ".setpdfwrite <</AlwaysEmbed [ ]>> setdistillerparams" \
-c ".setpdfwrite <</NeverEmbed [/Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic /Symbol /ZapfDingbats /Arial]>> setdistillerparams" \
-f input.pdf
在我原始的回答中忽略了一个选项,即添加:
-dDetectDuplicateImages=true
pdfinfo p1.pdf
Producer: libtiff / tiff2pdf - 20120922
CreationDate: Tue Jan 6 19:36:34 2015
ModDate: Tue Jan 6 19:36:34 2015
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 1
Encrypted: no
Page size: 595 x 842 pts (A4)
Page rot: 0
File size: 20983 bytes
Optimized: no
PDF version: 1.1
pdfimages
工具增加了对-list
参数的支持,该参数可以列出PDF文件中包含的所有图像:pdfimages -list p1.pdf
page num type width height color comp bpc enc interp objectID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------
1 0 image 423 600 rgb 3 8 jpeg no 7 0 52 52 19.2K 2.6%
pdftk
将三份副本连接起来,就像这样:pdftk p1.pdf p1.pdf p1.pdf cat output p3.pdf
然后通过 pdfimages -list
显示这些图像属性的结果:
pdfimages -list p3.pdf
page num type width height color comp bpc enc interp objectID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------
1 0 image 423 600 rgb 3 8 jpeg no 4 0 52 52 19.2K 2.6%
2 1 image 423 600 rgb 3 8 jpeg no 8 0 52 52 19.2K 2.6%
3 2 image 423 600 rgb 3 8 jpeg no 12 0 52 52 19.2K 2.6%
p3.pdf
中。 p3.pdf
由3页组成:pdfinfo p3.pdf | grep Pages:
Pages: 3
现在我们可以借助Ghostscript应用上述提到的优化方法。
gs -o p3-optim.pdf -sDEVICE=pdfwrite -dDetectDuplicateImages=true p3.pdf
检查:
pdfimages -list p3-optim.pdf
page num type width height color comp bpc enc interp objectID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------
1 0 image 423 600 rgb 3 8 jpeg no 10 0 52 52 19.2K 2.6%
2 1 image 423 600 rgb 3 8 jpeg no 10 0 52 52 19.2K 2.6%
3 2 image 423 600 rgb 3 8 jpeg no 10 0 52 52 19.2K 2.6%
ls -ltrh p1.pdf p3.pdf p3-optim.pdf
-rw-r--r--@ 1 kp staff 20K Jan 6 19:36 p1.pdf
-rw-r--r-- 1 kp staff 60K Jan 6 19:37 p3.pdf
-rw-r--r-- 1 kp staff 16K Jan 6 19:40 p3-optim.pdf
72
时,与设置/screen
时相比质量会降低,而且文件大小仍然比/screen
设置下要小 :) - clarkk/screen
选项的质量更好,与手动设置dpi为72
相比,文件大小更小。 - clarkk你可以通过将PDF转换为Postscript,然后再转换回PDF来获得良好的结果,使用:
pdf2ps file.pdf file.ps
ps2pdf -dPDFSETTINGS=/ebook file.ps file-optimized.pdf
参数-dPDFSETTINGS
的值定义了生成PDF时图像的质量。选项从低到高分别为:/screen
、/default
、/ebook
、/printer
、/prepress
,请参考http://milan.kupcevic.net/ghostscript-ps-pdf/。
Postscript文件可能会变得很大,但结果是值得的。我从一个60 MB的PDF文件转换为一个140 MB的Postscript文件,然后再优化成1.1 MB大小的PDF文件。
gs
生成更小的文件呢?此外,这样做会导致一些问题,因为Postscript缺少某些功能(例如alpha透明度、渐变、ICC配置文件)。 - Mikko Rantalainen我使用Ghostscript,并采用以下选项,这些选项来自此处.
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen \
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
您可能会发现来自Poppler的pdftocairo
可以制作更小的PDF文件,但请注意它会剥离一些功能(例如超链接)。
pdftocairo
和然后通过pdfcrop
(来自TeX)使其缩小到90K。 - mirabilos这对我很有帮助
将您的PDF文件转换为PS格式(这会创建一个较大的文件)
pdf2ps large.pdf very_large.ps
将新的PS转换为PDF格式
ps2pdf very_large.ps small.pdf
Source: https://pandemoniumillusion.wordpress.com/2008/05/07/compress-a-pdf-with-pdftk/
convert
可能会有所帮助:convert original.pdf reduced.pdf
Ghostscript附带ps2pdf14
实用程序,可用于优化PDF文件,但在某些情况下,“优化”后的文件大小可能比原始文件更大。
ps2pdf14 input.pdf output.pdf
执行的操作与 gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
相同。对于纯文本内容,输出文件 output.pdf
的大小为输入文件的 25%。 - code_angelpdfopt
生成的输出文件更大了。 - code_angel