首先,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之间的视觉差异),你可以通过使用(缩小)
-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
,应先检查都,输入和输出页面的字体嵌入的烦躁的状态:-DDEBUG)下列情况之一,按顺序在pdfinfo
和pdffonts
的帮助下:
pdfinfo -f 1 -l 1 -box input.pdf
pdfinfo -box output.pdf
pdffonts -f 1 -l 1 input.pdf
pdffonts output.pdf
UPDATE2:
你可以尝试提取从原来的PDF作进一步调查的字体(一个或多个)。 (如果您不知道如何操作,请询问新的单独的SO问题,如“我如何从PDF中提取字体以供进一步分析?“ and ”如何查看内部错误的字体?“)
无法访问源代码PDF无法提供任何好的具体建议。警告的类型可能意味着input.pdf是错误,并且其子集字体'Arial-BoldMT'没有被正确嵌入,'loca'表出现在OpenType字体中并且呈现出字形位置的索引,因此,所讨论的子集字体似乎要求根据表的188个字形,但只包含93个实际字形描述 – 2010-09-18 10:44:47