我需要从PDF生成JPEG。JPEG必须创建基于Trim框和PDF的版本1.3与额外的潘通颜色,绝对需要重印预览,所以只有GhostScript (当然,里普的可以处理他们)。Photoshop、Image和SIPS ( OS的可脚本图像处理系统)都无法解决这两个问题(裁剪和复合处理重印)。
我创建了一个应用程序,以光栅我收到的PDF,所有的工作良好,除了一些中国PDF有一种字体,而不是嵌入。此字体为中文STXiHei TrueType (CID),编码G8pc-EUC-H (从Acrobat提取的信息)。
现在,当GhostScript处理这些PDF时,会出现错误。我的问题是:
有人能帮我吗?
发布于 2011-07-13 16:20:32
这(最终)在UseNet上(在comp.text.pdf中)得到了回答。问题是PDF文件包含对CIDFont (不是字体,CIDFont)的引用。与上面的问题声明相反,字体不是嵌入的,这是困难所在。
CIDFonts比字体要复杂得多,用(例如)速递代替缺少的拉丁文常规字体,代替缺失的字体并不简单。
不可能跳过字体,因为Ghostscript无法立即知道文本将呈现在何处(即在我们找出文本将要绘制的位置之前,字体已经加载)。
现在,Ghostscript允许您指定其他字体;在CIDFonts的情况下,这些都在Ghostscript发行版中位于gs/Resource/Init中的称为cidfmap的文件中进行了描述。
问题1是,默认情况下,GS将其资源内置到可执行文件中,并使用位于ROM文件系统中的文件。所以我们需要告诉GS去看磁盘。有两种方法可以做到这一点:
1)将所有资源从源分发(/ GS /Resource下的所有内容)复制到一个方便的位置,并使用-sGenericResourceDir=开关告诉GS使用这个目录。如果这样做,则必须小心在路径末尾添加一个尾目录分隔符。我之所以提到这一点,是因为通常对GS来说,你不会这么做。在这种情况下PLRM说我们必须。
2)在方便的地方复制cidfmap文件,并告诉GS使用-I开关查找该目录,该开关将目录添加到搜索列表的头部。重要的是,它的头部,因为您只能有一个cidfmap文件,而GS使用的第一个找到的。
所以,继续到字体文件本身。您可以使用真正的CIDFont,也可以使用TrueType字体代替CIDFont。
如果使用真正的CIDFont,则必须使用上面的选项1 ( GenericResourceDir )并将文件放在GenericResourceDir位置下的一个名为Resource/CIDFonts的目录中,或者使用选项2将CIDFont放在-I指向的位置下的名为CIDFonts的目录中。
如果使用TrueType字体作为替代,则可以使用cidfmap中字体条目中的/Path键指向TrueType字体。
将未知来源的TrueType字体转换为特定类型的CIDFont的复杂性意味着您必须在cidfmap条目中提供大量信息,这在文件本身中有记录。需要注意的事情:
1) /Path必须指向字体文件,它必须存在并具有允许读取它的权限。
2)您应该为一个/SubfontID集合提供一个TrueType。如果您想使用除第一个子字体之外的任何内容,则必须提供一个SubfontID。
3) cidfmap中的条目由PostScript解释器解释,因此必须符合PostScript语法。特别地,字体名是一个PostScript名称对象,因此必须用'/‘引入。
最后,许多Linux发行版都没有为Ghostscript提供完整的源代码,您可能需要在使用上面的任何建议之前了解这一点。你可以从这里得到释放:
http://www.ghostscript.com/
https://stackoverflow.com/questions/6643817
复制相似问题