在 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