gs -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH \
-sDEVICE=pdfwrite -sOutputFile=output.pdf input.pdf
Run Code Online (Sandbox Code Playgroud)
我正在使用(尝试无论如何)使用Ghostscript来减少我的PDF文件大小.上面的命令看起来像它的工作,它大大减少了文件大小,但随后几个字段出现乱码.至于我可以追踪它,它正在进行字体替换.IE,同一文本=相同的乱码文本.
当它到达我时,字体嵌入在PDF中.另外,我试图将所有字体添加到Fontmap中.
任何想法,理想情况下我希望它使用嵌入式字体,而不必更新gs系统字体/编辑字体图等.我正在使用Ubuntu 9.10和嵌入的字体是Windows字体,Arial/TimesNewRoman.
谢谢.
如果它包含颜色,我需要转换灰度的pdf.为此,我找到了一个脚本,可以确定pdf是否已经是灰度级.
convert "source.pdf" -colorspace RGB -unique-colors txt:- 2> /dev/null \
| egrep -m 2 -v "#([0-9|A-F][0-9|A-F])\1{3}" \
| wc -l
Run Code Online (Sandbox Code Playgroud)
这会计算文档中存在多少种具有不同RGB值的颜色(因此它们不是灰色的).
如果pdf不是灰度文档,我继续使用ghostscript进行转换
gs \
-sOutputFile=temp.pdf \
-sDEVICE=pdfwrite \
-sColorConversionStrategy=Gray \
-dProcessColorModel=/DeviceGray \
-dCompatibilityLevel=1.4 \
-dNOPAUSE \
-dBATCH \
source.pdf < /dev/null
Run Code Online (Sandbox Code Playgroud)
如果我用PDF查看器打开输出文档,它会正确显示没有颜色.但是如果我在新生成的文档上尝试第一个脚本,结果证明它仍然包含一些颜色.如何将文档转换为精确灰度?我需要这个,因为如果我用彩色打印机打印这个文件,打印机将使用颜色而不是黑色打印灰色.