我有一个PDF文件,我想优化.我从外部源接收文件,所以我没有办法从头开始重新创建它.
当我在Acrobat中打开文件并查询资源时,它表示文件中的字体占用了90%的空间.如果我将文件保存为postscript,然后将postscript文件保存为优化的PDF,则文件要小得多(小80%以上),并且字体仍然是嵌入的.
我试图用ghostscript重新创建这些结果.我已尝试使用pswrite和pdfwrite进行各种选项排列,但是当我从PDF到Postscript进行初始转换时,文本会转换为图像.当我转换回PDF时,字体引用已经消失,所以我最终得到一个PDF文件,其中包含’imaged’文本而不是实际字体.
该文件包含22个嵌入式自定义Type1字体.我已经将字体添加到ghostscript搜索路径并证明ghostscript可以找到它们:
gs \
-I/home/nauc01
-sFONTPATH=/home/nauc01/fonts/Type1 \
-o 3783QP.pdf \
-sDEVICE=pdfwrite \
-g5950x8420 \
-c "200 700 moveto" \
-c "/3783QP findfont 60 scalefont setfont" \
-c "(TESTING !!!!!!) show showpage"
生成的文件正确嵌入了字体.
我也尝试使用ghostscript从PDF到PDF这样:
gs \
-sDEVICE=pdfwrite \
-sNOPAUSE \
-I/home/nauc01 \
-dBATCH \
-dCompatibilityLevel=1.4 \
-dPDFSETTINGS=/printer \
-CompressFonts=true \
-dSubsetFonts=true \
-sOutputFile=output.pdf \
input.pdf
但是输出通常比输入大,除了ghostscript之外我无法查看任何文件(adobe reader给出了“对象标签格式错误”).
我无法提供原始文件,因为它们包含机密信息,但我会尝试回答有关它们需要回答的任何问题.
有任何想法吗?提前致谢.
最佳答案 不要使用pswrite.正如您所发现的,这将呈现文本.而是使用保留字体和文本的ps2write设备.
你没有说你正在使用哪个版本的Ghostscript,但我建议你使用最近的版本.
一点; Ghostscript没有像Acrobat那样“优化”PDF,而是重新创建它.原始PDF被完全解释为产生一系列标记页面的操作,pdfwrite(和ps2write)然后创建一个只包含那些操作的新文件.
如果选择子集字体,则仅包含所需的字形.如果原始PDF包含无关信息(例如,Adobe Illustrator通常会嵌入.ai文件的完整副本),那么这将被丢弃.这可能会导致文件较小,也可能不会.
请注意,pdfwrite目前不支持压缩外部参照和其他一些后续功能,因此有些文件可能会变大.
我个人不会通过ps2write,因为这只是增加了另一层的prcoessing和丢弃信息.我只想用pdfwrite创建一个新的PDF文件.如果您找到不起作用的文件(使用当前代码),那么您应该在http://bugs.ghostscript.com处提出错误报告,以便有人可以解决问题.