一些你观察到的可能来自未使用对象的Ghostscript的清理尺寸优化,其最近收购的字体优化改进(你使用非常近版本的GS?!?)以及可能发生的图像重新/下采样。
Ghostscript的,如果用于PDF - > PDF转换,基本操作是这样的:
- 读取输入文件(S)与它的所有对象,并将其转换成图形页面的内部格式表示。
- 操作在命令行上询问内部格式的页面内容。
- 写出一个全新的PDF。
这意味着,对于大多数PDF - > PDF操作,您将有不同的排序和编号的PDF对象,甚至是对象的内部代码可能已经改变(即使你的眼睛没有发现任何输入和输出PDF之间的差异)。
默认情况下,Ghostscript也会压缩原始文件中未压缩的任何对象流(但这是一种无损压缩)。
现在为您非常简单的命令行不包含操作任何愿望,Ghostscript的假定要使用-dPDFSETTINGS=/default
,隐式地设置此参数,并相应地进行操作。
现在什么是/default
PDFSETTINGS ?!你有两个选择,找出:
阅读手册。大的table in middle of this section给出了一个概述。你可以看到,这个-dPDFSETTINGS=/default
本身就是它所代表的几十个其他更具体设置的缩写。给出的文档链接是针对开发代码的当前HEAD,实际使用的版本可能与不同。
查询(您自己的)Ghostscript了解此设置的详细含义。我对问题'Querying Ghostscript for the default options/settings of an output device...'和问题'What are PostScript dictionaries, and how can they be accessed (via Ghostscript)?'的回答对此做了更详细的阐述。总之,要查询的Ghostscript其/default
PDFSETTINGS的详细信息,运行以下命令:
gs \
-q \
-dNODISPLAY \
-c ".distillersettings /default get {exch ==only () print ===} forall quit"
你应该得到非常相似,这样的结果:
/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
从这些脱颖而出的唯一一点:您可能需要将/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 \
所以,你可以试试这个命令:
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
最后,克里斯哈斯人已经暗示:如果您的明确不希望Ghostscript默认应用的任何优化,您也可以使用pdftk
。 pdftk
根本无法做到这样的事情,并且由于其相对的操作麻烦(但可能还有比Ghostscript大得多的文件大小输出),您将获得相当大的速度。
感谢您推荐pdftk。对于简单的PDF文件连接,它似乎是完美的。 –
FWIW:'pdftk'不适用于CentOS/RHEL 7. –
很酷.. !!真的 –