在我的项目中,我使用GhostScript将pdf文件转换为png图像。问题是它无法正确处理pdf文件中未出现的字体,因此输出错误。当使用pdftoppm(一种xpdf工具(时,问题得到了解决。所以我想知道ghostscript和xpdf在转换阶段有什么区别?为什么GhostScript需要使用字体,而Xpdf不需要?
如果看不到PDF文件,就无法确定,但我可以想到三种可能性;
1( PDF文件确实包含该字体,由于某些原因,Ghostscript无法找到或使用它。这将是一个错误,可能通过使用当前版本修复。如果这还不能解决问题,那么你应该提交一份错误报告。
2( 你的操作系统上有可用的字体,xpdf已经被告知在哪里可以找到它。如果是这种情况,你几乎可以肯定地通过FontConfig(在Linux上(或编辑其中一个fontmap向Ghostscript提供相同的信息。GS或cidfmap,具体取决于字体的性质。
3( xpdf也没有使用正确的字体,但幸运的是,它作为替代品使用的字体比Ghostscript作为替代品的字体更接近原始字体。与上面的2一样,您可以更改Ghostscript正在使用的内容。
当然,这就是为什么所有PDF文件都应该嵌入它们使用的字体(至少作为子集(,尤其是它们使用的所有CIDFonts。