Fonts 光栅化PDF';未使用GhostScript嵌入字体的

Fonts 光栅化PDF';未使用GhostScript嵌入字体的,fonts,ghostscript,cjk,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),编码为G8p

我需要从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时出错。 我的问题是:

  • 由于非嵌入字体位于TrimBox区域之外,因此存在允许跳过非嵌入字体的GS参数
  • 如果第1点不可能,如何替换缺少的字体
  • 我在OS X上安装的GS 9.02不安装cidfmap文件或字体文件夹
  • 我需要安装什么以及在哪里使用替代字体
  • 我读了很多遍use.htm,花了几天的时间对所有这些进行测试,但都没有成功地试图忽略未嵌入的字体,或者用另一种字体替换它。争论似乎很复杂,但解决办法可能很简单
  • 有人能帮我吗?

    这(最终)是从哪里开始的答案,在UseNet上的comp.text.pdf中。 问题是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放在-I指向的位置下名为CIDFonts的目录中

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

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

    1) /Path必须指向字体文件,必须存在并且具有读取权限

    2) 您应该为TrueType集合提供/subcontid。如果要使用除第一个子字体以外的任何内容,则必须提供子字体ID

    3) cidfmap中的条目由PostScript解释器解释,因此必须符合PostScript语法。尤其是字体名称是PostScript名称对象,因此必须使用“/”引入

    最后,;许多Linux发行版没有提供Ghostscript的完整源代码,在使用上述任何建议之前,您可能需要了解这一点。您可以从这里获得发布:


    你应该考虑投票,也可以接受肯斯的回答。如果你不这样做,你会遇到不情愿地回答你未来的问题。你知道吗,有些人是为了“提高投票率”而参加比赛的?(我不认为,肯斯是……但其他人也在关注。)从你和肯斯在网上各种论坛上的活动中,我可以看出,为了解决你的问题,他花了相当长的时间来跟进你反复提出的问题。你知道怎么说“谢谢”,是吗?