在 Ghostscript 中处理 PDF/A 兼容性

Posted

技术标签:

【中文标题】在 Ghostscript 中处理 PDF/A 兼容性【英文标题】:PDF/A compatibility processing color gradients in Ghostscript 【发布时间】:2017-11-13 17:55:09 【问题描述】:

我有this PDF image,其中包含颜色渐变。我想使用 Ghostscript 9.22 将其转换为 PDF/A。我的命令是

gs -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -dSAFER -sColorConversionStrategy=UseDeviceIndependentColor -dCompressFonts=true -dEmbedAllFonts=true -dPDFA -dPDFACompatibilityPolicy=1 -dDetectDuplicateImages=true -dFastWebView=true -sOutputFile=$2 $1

但在尝试使用 PDFBox 预检验证结果时出现以下错误:

2.4.3 : 无效的色彩空间,缺少 DestOutputProfile

2.4.3 : 无效的色彩空间,缺少 DestOutputProfile

2.4.3 : 无效的色彩空间,缺少 DestOutputProfile

2.4.3 : 无效的色彩空间,没有色彩配置文件就不能使用运算符“f”

我想我必须告诉 Ghostscript 在输出中使用颜色配置文件,所以我分别尝试了这些参数并一起尝试了

-sOutputICCProfile=/usr/share/color/icc/CoatedFOGRA39.icc -sProfileOut=/usr/share/color/icc/CoatedFOGRA39.icc -sPostRenderProfile=/usr/share/color/icc/CoatedFOGRA39.icc

没有运气(我在该路径中有个人资料)。

我能做什么?

注意:该图是使用 TikZ 构建的,并且是文档的一部分:我实际上希望整个文档都符合要求,但仅在此图上就失败了。

【问题讨论】:

在 TeX 方面,罪魁祸首是来自 TikZ 的shader=interp。删除它,我可以使用上面的第一个命令获得 PDF/A。 【参考方案1】:

您尚未指定 PDFA_def.ps 文件。这是一项要求,不是可选的,您必须编辑内容才能正确。您只能使用 PDFA_def.ps 文件(基本上是一堆 pdfmarks)中概述的方式指定 DestOutputProfile。

步骤记录在here

我不确定,但我不会使用 FastWebView 创建 PDF/A 文件,我不确定线性化文件是否符合 PDF/A。无论如何,它也或多或少毫无意义。

【讨论】:

页面报告input.ps,所以是PS而不是PDF?如果我不能制作 PS 怎么办?此外,我正确验证了 FastWebView PDF/As 之前的内容。为什么说没意义? 文档仅使用 input.ps 作为输入文件名所在位置的示例。这是一个例子,仅此而已。线性化的 PDF 文件基本上没有意义,因为它们充其量只能更快地加载第 1 页,仅此而已,而且大多数 PDF 查看器只是忽略了线性化。 你是对的,它也适用于input.pdf(即使是微不足道的,他们可能会为像我这样的非专家澄清它)。唯一的问题是/ICCProfile 无法识别我系统上的绝对路径,所以我不得不将我的 icc 文件放入编译文件夹中。我仍然可以得到线性 PDF/As,因此它可能毫无意义,但它没有害处。 :-) 感谢您的帮助。 好吧,一个线性化的PDF文件比没有线性化的同一个文件要大,有些人似乎觉得这很重要。 如果 ICCProfile 指的是 PDFA_def.ps 中的条目,它肯定会识别绝对路径名。但如果设置 -dSAFER,则可以防止 Ghostscript 访问文件系统几乎所有部分中的文件。这就是 SAFER 的用途......

以上是关于在 Ghostscript 中处理 PDF/A 兼容性的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Ghostscript 和 Ghostscript .NET 通过嵌入 IIC 配置文件生成正确的 PDF/A

如何使用 ghostscript 将 PDF 转换为 PDF/A 或 PDF/X?

通过 Ghostscript 将 PS 文件转换为 PDF/A,色彩空间问题

使用 Ghostscript 将可搜索的 PDF 转换为可搜索的 PDF/A

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

Ghostscript:为啥我必须为 PDF/A 转换提供 pdfa_def.ps?