PDFBox - 在转换为PDF / A期间包含多个颜色配置文件

时间:2016-10-07 09:19:55

标签: pdf pdfbox pdfa

我们目前正在尝试合并多个PDF并从中创建PDF / A(1B)。

目前,我们想要修复颜色配置文件时遇到问题。我们收到的PDF没有嵌入的颜色配置文件,因此在PDFBox的合并功能期间,不会合并OutputIntents。因此,在最后一步中,我们尝试添加颜色配置文件。

如果我们不添加任何颜色配置文件,我们会得到RGB和CMYK的验证问题。如果我们将两种颜色配置文件添加到PDDocumentCatalog,那么只有第一个的验证问题就会消失。因此,如果我们首先添加RGB,我们只会获得CMYK验证问题,反之亦然。

添加颜色配置文件时,以下是代码的一部分:

      public void convertToPDFA(PDDocument doc, String file){

              PDMetadata metadata = new PDMetadata(doc);
              PDDocumentCatalog cat = doc.getDocumentCatalog();
              cat.setMetadata(metadata);

              // do metadata stuff, just removed it for now

              InputStream colorProfile = PDFService.class.getResourceAsStream("/pdfa/sRGB Color Space Profile.icm");
              PDOutputIntent oi = new PDOutputIntent(doc, colorProfile);
              oi.setInfo("sRGB IEC61966-2.1");
              oi.setOutputCondition("sRGB IEC61966-2.1");
              oi.setOutputConditionIdentifier("sRGB IEC61966-2.1");
              oi.setRegistryName("http://www.color.org");
              cat.addOutputIntent(oi); 

这是RGB的代码,我们还为CMYK添加了另一个* .icm颜色配置文件。 因此颜色配置文件看起来很好,因为依赖于我们首先添加的颜色配置文件,验证问题已经消失。

对我来说,感觉我们只是错过了一件小事,两种颜色配置文件都会被接受,或者只有一种颜色配置文件可用于创建PDF / A?

提前致谢并致以亲切的问候

1 个答案:

答案 0 :(得分:1)

只允许一个输出意图,请参阅here。另外还提​​到了一种替代方案,即仅使用基于ICC的色彩空间。

应该可能的(虽然超出了问题的范围),可以通过在资源字典中添加ColorSpaces的DefaultGray,DefaultRGB或DefaultCMYK条目,将ICC配置文件分配给/ DeviceGray,/ DeviceRGB或/ DeviceCMYK,正如the PDF specification的第8.6.5.6节所述:

  

选择设备颜色空间时,ColorSpace子字典   当前资源字典(见7.8.3,"资源   检查字典")是否存在指定a的条目   相应的默认颜色空间(DefaultGray,DefaultRGB或   DefaultCMYK,对应DeviceGray,DeviceRGB或DeviceCMYK,   分别)。如果存在此类条目,则其值应用作   当前正在执行的操作的颜色空间。

请注意,使PDF文件PDF / A-1b符合要求通常比仅添加输出意图更棘手 - 使用PDFBox预检或使用online validator from PDF Tools检查文件,可能存在许多错误。这就是Callas Software或PDF Tools的产品将PDF文件转换为PDF / A的原因。