在特定PDF上,当运行以下命令时:
gs -dSAFER -dBATCH -dNOPAUSE -dQUIET -dFirstPage=1 -dLastPage=1 -sDEVICE=pdfwrite -sOutputFile=output.pdf input.pdf我得到了这个错误:
GPL Ghostscript 8.71: Warning: 'loca' length 188 is greater than numGlyphs 93 in the font MGOXZX+Arial-BoldMT.你知道这个错误意味着什么以及如何解决这个问题吗?
发布于 2010-09-17 15:41:45
首先,Ghostscript没有声明这是一个“错误”,而是一个“警告”。这是很大的不同。
其次,您要求Ghostscript输出PDF输入的第一页。它成功了吗?在比较output.pdf和input.pdf的首页时,您是否看到了明显的差异?
第三,如果真的有问题,你应该指出你正在运行的Ghostscript版本。。
更新:当然,StackOverflowNewbie已经通过引用警告消息来暗示Ghostscript的版本...
“警告”的意思是:输出文件可能有问题(它本身仍然是一个有效的PDF),但你最好检查它。
"Error“意味着:输出肯定有问题,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)此外,由于警告提到字体嵌入,您应该首先在pdfinfo和pdffonts的帮助下检查、输入和输出页面的字体嵌入性状态
pdfinfo -f 1 -l 1 -box input.pdf
pdfinfo -box output.pdf
pdffonts -f 1 -l 1 input.pdf
pdffonts output.pdfUpdate2:
您可以尝试从原始PDF中提取字体以供进一步研究。(如果您不知道如何做到这一点,可以问一些新的、单独的SO问题,比如“如何从PDF中提取字体以便进一步分析?”和“我如何调查字体的内部错误?”)
https://stackoverflow.com/questions/3732189
复制相似问题