2014-11-17 60 views
1

我面临着一个非常类似的问题,因为在这个thread讨论色彩空间的问题。使用GhostScript 9.14我试图从Postscript文件创建一个有效的PDF/A。我正在调用以下命令:通过Ghostscript的转换PS文件转换为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的色彩空间转换为输出PDF的所需色彩空间,而无需知道输入文件具有何种色彩空间。显然这是不可能的,因为我还测试了一个PS文件带有明显的色彩空间CMYK以相同的结果张贴以上。

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

感谢您的帮助,

克里斯托弗

+0

要确定这不是PDFBox问题:1)尝试最新版本的预检https://repository.apache.org/content/groups/snapshots/org/apache/pdfbox/preflight-app/2.0 .0-SNAPSHOT/2)使用不同的软件进行验证,例如http://www.pdf-tools.com/pdf/validate-pdfa-online.aspx –

回答

2

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

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

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

虽然肯夏普不鼓励使用该参数,我会在今后使用它。我无法为我的公司编译最新版本的GS,只允许使用即用型版本。使用-dUseCIEColor调用GS可生成有效的PDFAs(Java PDFBox和www.pdf-tools.com)。