我找到了这个简洁的命令,使用Ghostscript将多个PDF合并为一个:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=out.pdf in1.pdf in2.pdf
Run Code Online (Sandbox Code Playgroud)
结果大小小于2个PDF的总大小.
使用单个文件作为输入运行命令仍会产生较小的输出文件.
Ghostscript上是否有一个选项可以复制页面,因为它们在合并时出现而不进行任何压缩?
如果没有,Ghostscript压缩是否可能如此之好以至于绝对不会导致质量下降?
Chr*_*aas 69
以下是您在使用设备时可以传递的一些其他选项pdfwrite
.根据该页面,如果你没有传递任何东西,那么-dPDFSETTINGS
它被设置为接近的东西/screen
,虽然它没有更具体.您可以尝试将其设置为-dPDFSETTINGS=/prepress
仅压缩300 dpi以上的东西.
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=out.pdf in1.pdf in2.pdf
Run Code Online (Sandbox Code Playgroud)
另一种选择是pdftk:
pdftk in1.pdf in2.pdf cat output out.pdf
Run Code Online (Sandbox Code Playgroud)
Kur*_*fle 33
你观察到的一些大小优化可能来自Ghostscript清理未使用的对象,它最近获得的字体优化改进(你使用最近版本的GS吗?!)和可能的图像重新/下采样发生了.
Ghostscript,如果用于PDF - > PDF转换,基本上如下操作:
这意味着对于大多数PDF - > PDF操作,您将对PDF对象进行不同的排序和编号,甚至对象的内部代码也可能已更改(即使您的眼睛没有发现输入和输出PDF之间的任何差异).
默认情况下,Ghostscript还会压缩原始文件中未压缩的任何对象流(但这是无损压缩).
现在,对于非常简单的命令行,它不包含任何操作意愿,Ghostscript 假定您要使用-dPDFSETTINGS=/default
,隐式设置此参数并相应地操作.
现在什么是/default
PDFSETTINGS?!您有两种选择可以找到:
阅读手册.本节中间的大表格给出了概述.您可以看到,这个-dPDFSETTINGS=/default
只是它代表的几十个其他更具体设置的简写.给出的文档的链接是针对开发代码的当前HEAD ,当然实际使用的版本可能不同.
查询(您自己的)Ghostscript以了解此设置的详细含义.我对"输出设备的默认选项/设置查询Ghostscript"的问题的回答...和问题"什么是PostScript词典,以及如何访问它们(通过Ghostscript)?" 详细说明这一点.简而言之,要查询Ghostscript以获取其/default
PDFSETTINGS 的详细信息,请运行以下命令:
gs \
-q \
-dNODISPLAY \
-c ".distillersettings /default get {exch ==only ( ) print ===} forall quit"
Run Code Online (Sandbox Code Playgroud)
您应该得到与此非常相似的结果:
/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
Run Code Online (Sandbox Code Playgroud)
从这些站出来的只有一点:你可能想改变/AutoRotagePages
从/PageByPage
到/None
.在命令行上你会把它作为-dAutoRotatePages=/None
.
为您提供一个完整的参数列表,通过添加以下参数,可以明确告诉Ghostscript使用尽可能多的直通模式到输入PDF:
-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 \
Run Code Online (Sandbox Code Playgroud)所以你可以尝试这个命令:
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
Run Code Online (Sandbox Code Playgroud)
最后,正如Chris Haas已经暗示的那样:pdftk
如果您特别不希望 Ghostscript默认应用任何优化,您也可以使用.pdftk
根本无法做到这一点,你可以获得相当快的操作速度(但可能还有比Ghostscript更大的文件大小输出).
归档时间: |
|
查看次数: |
58153 次 |
最近记录: |