我面临着与此线程中讨论的非常相似的问题。使用 GhostScript 9.14 我正在尝试从 Postscript 文件创建有效的 PDF/A。我正在调用以下命令:
"gswin64.exe" -dPDFA=1 -dBATCH -dNOPAUSE -dNOOUTERSAVE
-sColorConversionStrategy=/RGB -sOutputICCProfile=AdobeRGB1998.icc -sDEVICE=pdfwrite
-sOutputFile=output.pdf -dPDFACompatibilityPolicy=2 "PDFA_defRGB.ps" input.ps
这样做之后,我通过 Apache 的 PDFBox 和通过 www.pdf-tools.com 在线验证。PDF-tools 告诉我:
Validating file "output.pdf" for conformance level pdfa-1b
A device-specific color space (DeviceCMYK) without an appropriate output intent is used.
The document does not conform to the requested standard.
The document contains device-specific color spaces.
如果我使用-sColorConversionStrategy=/CMYK
适当的 CMYK-.icc.file 和 PDFA_def,验证也会失败。干得好:
Validating file "output.pdf" for conformance level pdfa-1b
The value of the key N is 3 but must be 4.
A device-specific color space (DeviceCMYK) without an appropriate output intent is used.
The document does not conform to the requested standard.
The document doesn't conform to the PDF reference (missing required entries, wrong value
types, etc.).
The document contains device-specific color spaces.
Java PDFBox 验证令人惊讶地返回 true(PDF/A 有效)。
如果我使用-sColorConversionStrategy=/UseDeviceIndependentColor
而不是 /CMYK,在线验证将失败,结果如上。PDFBox 再次返回一个有效文件。如果我使用-sColorConversionStrategy=/UseDeviceIndependentColor
顶部所示的 RGB 设置,在线验证将失败,与第一条错误消息相同:
Validating file "output.pdf" for conformance level pdfa-1b
A device-specific color space (DeviceCMYK) without an appropriate output intent is used.
The document does not conform to the requested standard.
The document contains device-specific color spaces.
PDFBox 验证也失败。
当使用-sProcessColorModel=DeviceCMYK
而不是-sColorConversionStrategy
在线验证时,PDFBox 都检测到有效的 PDF/A。
output.pdf validated successfully.
Status Information
output.pdf (pdfa-1b)
所以有什么问题?据我了解 GhostScript 命令,-sColorConversionStrategy 应确保将输入 PS 的颜色空间转换为输出 PDF 的所需颜色空间 - 无需知道输入文件具有什么颜色空间。显然这是不可能的,因为我还测试了一个具有明显色彩空间 CMYK 的 ps 文件,结果与上面发布的结果相同。
我需要从 Java 代码中调用 GhostScript,获取未知的 ps 文件作为输入,将它们转换为有效的 PDF/A 文件。那么有没有可能使用 GhostScript 来做到这一点,唯一的保证是输入文件格式是 Postscript?
感谢您的任何帮助,
克里斯托弗