首先,Ghostscript 没有将此声明为“错误”,而是“警告”。那是相当不同的。
其次,您要求 Ghostscript 输出 PDF 输入的第一页。它奏效了吗?在比较 output.pdf 和 input.pdf 的第一页时,您是否看到任何明显的差异?
第三,如果真的有问题,你应该指出你正在运行的 Ghostscript 版本。最近的一个是 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)
此外,由于警告提到 font ,您应该首先在和的帮助下检查输入和输出页面Arial-BoldMT
的字体嵌入状态: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 中提取字体以进行进一步分析?”和“如何调查字体的内部故障?”)