用于合并PDF的重影脚本会压缩结果
我发现这个简洁的命令可以使用Ghostscript将多个PDF合并为一个:用于合并PDF的重影脚本会压缩结果,pdf,ghostscript,Pdf,Ghostscript,我发现这个简洁的命令可以使用Ghostscript将多个PDF合并为一个: gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=out.pdf in1.pdf in2.pdf 结果大小小于2个PDF的组合大小 以单个文件作为输入运行该命令仍然会生成较小的输出文件 Ghostscript上是否有一个选项,可以只复制合并时显示的页面,而不进行任何压缩 如果不是,那么Ghostscript压缩是否可能非常好,完全不会导致质量损失 使用pdfw
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=out.pdf in1.pdf in2.pdf
结果大小小于2个PDF的组合大小
以单个文件作为输入运行该命令仍然会生成较小的输出文件
Ghostscript上是否有一个选项,可以只复制合并时显示的页面,而不进行任何压缩
如果不是,那么Ghostscript压缩是否可能非常好,完全不会导致质量损失 使用pdfwrite
作为您的设备时,您可以传递以下信息。根据该页面,如果您没有传递任何内容,则会将其设置为接近于/screen
,尽管它没有变得更具体。您可以尝试将其设置为-dPDFSETTINGS=/prepress
,这样只能压缩300 dpi以上的内容
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=out.pdf in1.pdf in2.pdf
另一种选择是:
您观察到的一些大小优化可能来自Ghostscript对未使用对象的清理、最近获得的字体优化改进(您是否使用最新版本的GS?!?)以及可能发生的图像重新/向下采样 如果用于PDF->PDF转换,则Ghostscript的基本操作如下:
-dPDFSETTINGS=/default
,隐式设置此参数并相应地进行操作
现在什么是/default
PDF设置?!您有两个选项可以找到:
-dPDFSETTINGS=/default
本身只是它所代表的几十个其他更具体设置的简写。提供的文档链接是针对当前开发代码负责人的,您实际使用的版本当然可能不同/default
PDFSETTINGS详细信息,请运行以下命令:
gs \
-q \
-dNODISPLAY \
-c ".distillersettings /default get {exch ==only ( ) print ===} forall quit"
gs \
-o output.pdf \
-sDEVICE=pdfwrite \
-dAntiAliasColorImage=false \
-dAntiAliasGrayImage=false \
-dAntiAliasMonoImage=false \
-dAutoFilterColorImages=false \
-dAutoFilterGrayImages=false \
-dDownsampleColorImages=false \
-dDownsampleGrayImages=false \
-dDownsampleMonoImages=false \
-dColorConversionStrategy=/LeaveColorUnchanged \
-dConvertCMYKImagesToRGB=false \
-dConvertImagesToIndexed=false \
-dUCRandBGInfo=/Preserve \
-dPreserveHalftoneInfo=true \
-dPreserveOPIComments=true \
-dPreserveOverprintSettings=true \
input1.pdf \
input2.pdf
您应该得到与此非常相似的结果:
/Optimize false
/DoThumbnails false
/PreserveEPSInfo true
/ColorConversionStrategy /LeaveColorUnchanged
/DownsampleMonoImages false
/EmbedAllFonts true
/CannotEmbedFontPolicy /Warning
/PreserveOPIComments true
/GrayACSImageDict << /HSamples [2 1 1 2] /VSamples [2 1 1 2] /QFactor 0.9 /Blend 1 >>
/DownsampleColorImages false
/PreserveOverprintSettings true
/CreateJobTicket false
/AutoRotatePages /PageByPage
/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]
/ColorACSImageDict << /HSamples [2 1 1 2] /VSamples [2 1 1 2] /QFactor 0.9 /Blend 1 >>
/DownsampleGrayImages false
/UCRandBGInfo /Preserve
gs \
-q \
-dNODISPLAY \
-c ".distillersettings /default get {exch ==only ( ) print ===} forall quit"
gs \
-o output.pdf \
-sDEVICE=pdfwrite \
-dAntiAliasColorImage=false \
-dAntiAliasGrayImage=false \
-dAntiAliasMonoImage=false \
-dAutoFilterColorImages=false \
-dAutoFilterGrayImages=false \
-dDownsampleColorImages=false \
-dDownsampleGrayImages=false \
-dDownsampleMonoImages=false \
-dColorConversionStrategy=/LeaveColorUnchanged \
-dConvertCMYKImagesToRGB=false \
-dConvertImagesToIndexed=false \
-dUCRandBGInfo=/Preserve \
-dPreserveHalftoneInfo=true \
-dPreserveOPIComments=true \
-dPreserveOverprintSettings=true \
input1.pdf \
input2.pdf
最后,正如Chris Haas已经暗示的那样:如果您特别不希望Ghostscript默认应用的任何优化,也可以使用
pdftk
pdftk
根本无法做这些事情,并且由于其相对简单的操作,您将获得相当大的速度(但可能比Ghostscript输出的文件大得多) 我在iOS终端上成功地使用了以下代码来递归压缩多个PDF。我把它贴了出来,因为我找不到一个简单的复制和粘贴就适合我的东西
find-在阅读pdf时命名“*.pdf”;do gs-sDEVICE=pdfwrite-dCompatibilityLevel=1.4-dPDFSETTINGS=/ebook-dNOPAUSE-dQUIET-dBATCH-sOutputFile=“${pdf}\u new.pdf”“$pdf”;完成
注意:您可能需要不同的输出质量,因此可以按如下方式更改-dPDFSETTINGS
参数:
-dPDFSETTINGS=/screen
:质量更低,尺寸更小。-dPDFSETTINGS=/ebook
:为了获得更好的质量,但是PDF要稍大一些。-dPDFSETTINGS=/prepress
:输出类似于Acrobat蒸馏器的“印前优化”设置。-dPDFSETTINGS=/printer
:选择类似于Acrobat蒸馏器“打印优化”设置的输出。-dPDFSETTINGS=/default
:选择在各种用途中都有用的输出,可能会以牺牲更大的输出文件为代价。感谢推荐pdftk。对于PDF文件的简单连接,它似乎是完美的。FWIW:pdftk
不适用于CentOS/RHEL 7。我碰巧丢失了页面,并且随着gs
的增加,大小增加了10倍pdftk
除了速度快得多之外,只需连接而无需修改。pdftk
自2016年3月起不适用于CentOS/RHEL 7。您能否应用-dPDFSETTINGS=
设置之一,然后仅使用-d*
设置覆盖其中的一个子集(在您的回答中)稍后在命令行?@CMCDRANGKAI:是的,你可以。(虽然我还没有测试过,但如果这不起作用,那就是一个bug。)这里有一个重新打包的pdftk版本,可以在Centos 7上使用