首先,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
-dPDFWRDEBUG
-dTTFDEBUG
-dCCFONTDEBUG
-dFAPIDEBUG
-dCFFDEBUG
-dCMAPDEBUG
-dDOCIEDEBUG
-dSETPDDEBUG
-dSTRESDEBUG
-dVGIFDEBUG
-dVJPGDEBUG
-dINITDEBUG
-dEPSDEBUG
-dPDFOPTDEBUG
此外,由于警告中提到字体
Arial-BoldMT
,您应该首先使用
pdfinfo
和
pdffonts
工具检查
输入和输出页面的嵌入字体状态。请注意保留HTML标签。
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中提取字体进行进一步分析?”和“如何调查字体内部故障?”)