首先,Ghostscript 没有将此声明为“错误”,而是“警告”。差别很大。
其次,您要求 Ghostscript 输出 PDF 输入的第一页。它奏效了吗?比较 output.pdf 和 input.pdf 的第一页时,您是否发现任何明显的差异?
第三,如果真的有问题,你应该指出你正在运行的 Ghostscript 版本。 most recent one is 8.71。
更新:当然,StackOverflowNewbie 已经通过引用警告信息暗示了 Ghostscript 的版本...
“警告”的意思是:可能输出文件有问题(它本身仍然是有效的 PDF),但您最好检查一下。
“错误”表示:输出肯定有问题,Ghostscript 将中止所有进一步的处理;输出很可能甚至不是有效的 PDF。
有很多不同的方法可以进一步调试问题。但是,如果您没有看到有问题的文件,就不可能给出任何准确的建议。 StackOverflowNewbie 报告输出页面看起来与输入不同。
所以这是要使用的大锤:将-dDEBUG 添加到命令行:
gs \
-sOutputFile=output.pdf \
-dDEBUG \
-dLastPage=1 \
-sDEVICE=pdfwrite \
input.pdf
注意事项!这可能会在您的控制台中产生大量的 stderr/stdout 输出。
如果您已经知道或知道问题的根源在哪里(您甚至可以通过查看输入和输出 PDF 之间的视觉差异直接假设),您可以通过使用(而不是-dDEBUG) 下列之一,按顺序:
-dPDFDEBUG # (debug PDF Interpreter)
-dPDFWRDEBUG # (debug PDF Writer)
-dTTFDEBUG # (debug TTF Fonts)
-dCCFONTDEBUG # (debug compiled-in Fonts)
-dFAPIDEBUG # (debug Font API)
-dCFFDEBUG # (debug CFF Fonts)
-dCMAPDEBUG # (debug CMAP)
-dDOCIEDEBUG # (debug CIE color)
-dSETPDDEBUG # (debug setpagedevice)
-dSTRESDEBUG # (debug Static Resources)
-dVGIFDEBUG # (debug ViewGIF)
-dVJPGDEBUG # (debug ViewJPEG)
-dINITDEBUG # (debug Initialization)
-dEPSDEBUG # (debug EPS handling)
-dPDFOPTDEBUG # (debug PDF Optimizer/Linearizer)
另外,由于警告提到字体Arial-BoldMT,您应该首先检查both的字体嵌入状态,输入和输出页面的帮助pdfinfo 和 pdffonts:
pdfinfo -f 1 -l 1 -box input.pdf
pdfinfo -box output.pdf
pdffonts -f 1 -l 1 input.pdf
pdffonts output.pdf
更新2:
您可以尝试从原始 PDF 中提取字体以进行进一步调查。 (如果您不知道如何执行此操作,请提出新的、单独的 SO 问题,例如 “我如何从 PDF 中提取字体以进行进一步分析?” 和 “我该如何调查内部故障的字体?")