gpt4 book ai didi

fonts - 使用 GhostScript 对未嵌入字体的 PDF 进行栅格化

转载 作者:行者123 更新时间:2023-12-03 05:07:30 31 4
gpt4 key购买 nike

我需要从 PDF 生成 JPEG。 JPEG 必须基于裁切框创建,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,并花了几天的时间进行测试,尝试忽略或用其他字体替换未嵌入的字体,但都没有成功。这个论点看起来很复杂,但解决方案可能很简单。

有人可以帮助我吗?

最佳答案

这个问题(最终)从它开始的地方得到了答案,在 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 放入名为 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/

关于fonts - 使用 GhostScript 对未嵌入字体的 PDF 进行栅格化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6643817/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com