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

时间:2014-11-17 10:33:27

标签: validation ghostscript pdfbox icc pdfa

我遇到了与此thread中讨论的非常相似的问题。使用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工具告诉我:

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验证令人惊讶地返回(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的颜色空间转换为output-PDF的所需颜色空间 - 而不知道输入文件具有什么颜色空间。显然这是不可能的,我也测试了一个具有明显色彩空间CMYK的ps文件,其结果与上面公布的相同。

我需要从Java代码调用GhostScript,将未知的ps文件作为输入转换为有效的PDF / A文件。那么有没有可能使用GhostScript这样做,唯一保证输入文件格式是Postscript?

感谢您的帮助,

克里斯托弗

1 个答案:

答案 0 :(得分:2)

验证不是PDFBox的问题。正如我在GhostScript的bug网站上讨论的那样(见http://bugs.ghostscript.com/show_bug.cgi?id=695686#c10)我在第一篇文章中描述的问题应该用最新的Ghostscript代码(不是9.15版本,btw)来解决。

我用一个名为-dUseCIEColor的脏参数来解决这个问题。所以我这样调用GS:

"gswin64.exe" -dPDFA=1 -dBATCH -dNOPAUSE -dNOOUTERSAVE 
-sColorConversionStrategy=/RGB -dUseCIEColor -sDEVICE=pdfwrite 
-sOutputFile=output.pdf -dPDFACompatibilityPolicy=2  "PDFA_defRGB.ps" input.ps

虽然Ken Sharp不鼓励使用该参数,但我将在此后使用它。我无法为我的公司编译最新版本的GS,只允许使用现成版本。使用-dUseCIEColor调用GS可生成有效的PDFAs(Java PDFBox和www.pdf-tools.com)。