0

所以最近我设法创建了一组 PHP 脚本,允许哑机用户上传 PDF 文件并将其作为 JPG 图像查看。它完美地工作。我对其进行了测试,在大多数情况下它似乎都可以正常工作。此外,负载是完美平衡的,所以到目前为止没有问题,我已经准备好迎接大量的流量了!

当用户上传没有嵌入字体且使用 Ghostscript 无法识别的字体的 PDF 文件时,就会出现我的问题。是否可以设置默认后备字体以防止 Ghostscript 出现错误?

设置:操作系统:Debian

它是如何工作的:我使用 imagick 提供的“转换”命令将 pdf 转换为 jpeg。没有设置其他参数。我不确定我的 Ghostscript/Imagick 设置如何,但我认为它没有什么特别之处。如果您需要了解有关安装的信息,请提供具体配置文件的位置和设置:我会尽快提供。

如果您还有什么需要,请随时询问!提前致谢!

4

2 回答 2

0

Ghostscript 不会对丢失的字体抛出错误,它会尝试回退,最初是通过将名称与字体和样式列表进行匹配,最后通过(通常)替换为 Helvetica。

在缺少 CIDFonts 的情况下,您不会说您看到缺少哪种类型)它会尝试替换并最终回退到使用 DroidSansFallback,它可能没有字形但仍然不会引发错误。

因此,要么您使用的 Ghostscript 版本太旧而无法提供此功能(并且您没有说明您使用的是什么版本的 GS),或者该功能已被破坏。当前版本是 9.10,我建议您确保使用它,理想情况下是您自己构建它,因为 Linux 维护人员习惯于将特定于发行版的补丁和不寻常(我们认为不受欢迎)构建条件应用于 Ghostscript .

虽然您可以使用 -sFONTPATH 添加其他字体,但对于缺少字体的 PDF 文件,这通常无济于事,因为您的系统上通常也不会有丢失的字体。

user1283633 非常正确,您不需要使用转换,除非您需要额外的处理,否则 Ghostscript 完全能够直接生成 JPEG 输出。

于 2013-09-26T07:12:03.860 回答
0

是的,您可以添加此参数以指向 windows 中的字体文件夹,例如,在 ghostscript 过程中,它将开始从此路径获取字体

  -sFONTPATH=c:/windows/fonts 

另请注意,您可以下载并添加 Windows 字体文件夹中不可用的其他字体。

至于设置问题,对我来说,我使用 ghostscript 将 PDF 转换为图像,为什么要使用 imagemagick?至于这部分不需要参数,在我的情况下,我正在使用参数来提高生成图像的质量,作为建议,您可以将此参数添加到您的 ghostscript 以控制生成图像的质量

  -r150 

根据这里的 ghosscript 文档

您可以为 Ghostscript 提供命令行选项:-dPDFNOCIDFALLBACK。通过将 -dPDFNOCIDFALLBACK 与 -dPDFSTOPONERROR 相结合,生产工作流程可以强制缺少 CIDFont 的 PDF 出错,并避免仅在打印后才意识到 CIDFont 丢失。

于 2013-09-26T06:00:49.550 回答