使用未使用GhostScript嵌入的字体栅格化PDF

Ste*_*ano 3 fonts ghostscript cjk

我需要从PDF生成JPEG.JPEG必须基于Trim Box创建,而PDF可以是1.3版,其中额外的Pantone颜色绝对需要叠印预览,因此只有GhostScript(当然Rip可以处理它们).Photoshop,Image Magick和SIPS(OS X的可编写脚本图像处理系统)都无法解决这两个问题(剪裁裁剪和复合处理叠印).

我创建了一个应用程序来光栅化我收到的PDF,所有作品都很好,除了一些中文PDF有一个未嵌入的字体.此字体为中文STXiHei TrueType(CID),编码为G8pc-EUC-H(从Acrobat Pro中提取的信息).

现在当GhostScript处理这些PDF时出错了.我的问题是:

  1. 因为未嵌入的字体在TrimBox区域之外,所以有一个GS参数允许跳过不嵌入的字体?
  2. 如果点1不可能,如何替换丢失的字体?
  3. 我在OS X上安装GS 9.02不会安装cidfmap文件或字体文件夹.
  4. 我需要安装什么以及在哪里使用替代字体?
  5. 我多次阅读use.htm并花了几天的时间测试所有这些都没有成功,试图忽略或用另一个替换未嵌入的字体.这个论点似乎很复杂,但解决方案可能很简单.

有人可以帮帮我吗?

Ken*_*enS 5

这个(最终)在comp.text.pdf中的UseNet上得到了回答.问题是PDF文件包含对CIDFont(不是字体,CIDFont)的引用.与上面的问题陈述相反,字体没有嵌入,这就是困难.

CIDFonts比字体更复杂,并且用缺少拉丁语常规字体替换(例如)Courier的方式替换丢失字体并不简单.

跳过字体是不可能的,因为Ghostscript无法立即知道文本的呈现位置(即在我们找到要绘制文本的位置之前加载字体).

现在Ghostscript允许你指定其他字体; 在CIDFonts的情况下,这些在名为cidfmap的文件中描述,该文件位于Ghostscript发行版中的gs/Resource/Init中.

问题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放在名为CIDFonts的目录下. -I指向的位置.

如果使用TrueType字体作为替代,则可以使用cidfmap中字体条目中的/ Path键指向TrueType字体.

将未知来源的TrueType字体转换为特定类型的CIDFont的复杂性意味着您必须在cidfmap条目中提供大量信息,这在文件本身中有记录.需要注意的事项:

1)/ Path必须指向字体文件,它必须存在并具有允许读取的权限.

2)您应该为TrueType集合提供/ SubfontID.如果你想使用除第一个子词之外的任何东西,那么你必须提供一个SubfontID.

3)cidfmap中的条目由PostScript解释器解释,因此必须符合PostScript语法.特别是字体名称是PostScript名称对象,因此必须使用'/'引入.

最后; 许多Linux发行版没有提供Ghostscript的完整源代码,在使用上述任何建议之前,您可能需要选择它.你可以从这里获得版本:

http://www.ghostscript.com/