使用 Ghostscript 将 PDF 转换为 PDF/A 时出错

Posted

技术标签:

【中文标题】使用 Ghostscript 将 PDF 转换为 PDF/A 时出错【英文标题】:Error using Ghostscript to convert PDF to PDF/A 【发布时间】:2017-09-04 13:15:11 【问题描述】:

我试过这个命令:

gs -dPDFA -dBATCH -dNOPAUSE -sProcessColorModel=DeviceRGB -sDEVICE=pdfwrite -sPDFACompatibilityPolicy=1 -sOutputFile=/tmp/test/pdfa/pdftopdfa.pdf /tmp/test/pdftopdfa.pdf 

但我得到了这个错误:

Artifex Ghostscript 9.14:找不到初始化文件 gs_init.ps。

我尝试了另一个命令:

gs -dPDFA -dBATCH -dNOPAUSE -dUseCIEColor -sProcessColorModel=DeviceCMYK -sDEVICE=pdfwrite -sPDFACompatibilityPolicy=1 -sOutputFile=/tmp/test/pdfa/23238input.xml_2.pdf 23238input.xml_2.pdf

但我得到了这个错误:

Artifex Ghostscript 9.14 (2014-03-26) 版权所有 (C) 2014 Artifex Software, Inc. 保留所有权利。本软件自带NO 保修:请参阅文件 PUBLIC 了解详细信息。找不到(或打开) 初始化文件 (gs_std_e.ps) 不可恢复的错误:未定义 .uninstallpagedevice 操作数栈:gs_std_e.ps gs_std_e.ps gs_std_e.ps

【问题讨论】:

【参考方案1】:

首先你使用的是旧版本的 Ghostscript,你应该升级一下。

其次,无论您从哪里获得它,它都是非标准的,因为它具有存储在磁盘上的 PostScript 资源,默认情况下将它们作为 ROM 文件系统构建到二进制文件中。

最后,磁盘上的资源似乎丢失或损坏。您可以搜索它们,它们通常位于 /usr/local/bin/ghostpdl/Resource 之类的位置,然后使用 -I 开关将该路径显示给 Ghostscript,以便它知道在哪里查找。

但由于它是旧版本,所以我建议您改用当前版本 (9.21)。如果你得到一个包,但它不能工作,那么你应该向包维护者投诉。如果您愿意,您可以简单地克隆 Ghostscript Git 存储库并自己构建它,如果您有一个可用的 C 编译器 (gcc),这并不难。最后,有预构建的 Linux 二进制文件 here可能在您的系统上运行,具体取决于您的设置。

关于命令行的几点说明;您尚未指定 PDFA_def.ps 文件,您必须这样做才能创建有效的 PDF/A 文件,请参阅此 documentation 但请注意这是当前的 9.21 文档。如果您不提供该文件(根据提供的模型进行了适当修改),那么您将无法创建符合要求的 PDF/A 文件。

除非你有充分的理由,否则不要使用 -dUseCIEColor,如果你不知道它的作用(我猜你不知道),那么你就没有充分的理由。如果您在不了解的情况下使用它,只会对性能产生不利影响,并且可能会导致色彩还原不佳。

【讨论】:

以上是关于使用 Ghostscript 将 PDF 转换为 PDF/A 时出错的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ghostscript 将 TIFF 转换为 PDF

Ghostscript将pdf转换为方向错误的pcl

使用 PHP(ghostscript) 将 PDF 转换为图像耗时太长

Ghostscript:将 PDF 转换为 CMYK EPS

无法使用 ImageMagick 和 GhostScript 将 PDF 转换为 JPG

使用 Ghostscript 将 PDF 转换为 PDF/A 时出错