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

PDFBox-在转换为PDF/A期间包括多个颜色配置文件,pdf,pdfbox,pdfa,Pdf,Pdfbox,Pdfa,我们目前正在尝试合并多个PDF,并从中创建PDF/a(1B) 目前,当我们想要修复颜色配置文件时,我们面临一个问题。我们收到的PDF没有嵌入颜色配置文件,因此在PDFBox的合并功能期间,不会合并输出内容。因此,在最后一步中,我们尝试添加颜色配置文件 如果我们不添加任何颜色配置文件,我们会遇到RGB和CMYK的验证问题。如果我们将两个颜色配置文件都添加到PDDocumentCatalog,那么只有第一个的验证问题消失了。因此,如果我们先添加RGB,我们只会遇到CMYK验证问题,反之亦然 下面是我

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

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

如果我们不添加任何颜色配置文件,我们会遇到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


提前感谢并致以亲切问候

仅允许一个输出意图,请参阅。这里还提到了另一种选择,即仅使用基于ICC的颜色空间

可能的情况是(尽管超出了问题的范围),通过在资源字典的颜色空间中添加DefaultGray、DefaultRGB或DefaultCMYK条目,将ICC配置文件分配给/DeviceGray、/DeviceRGB或/DeviceCMYK,如第8.6.5.6节所述:

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

请注意,使PDF文件符合PDF/A-1b通常比仅添加输出意图更为棘手-请使用飞行前或检查文件,可能存在许多错误。这就是为什么Callas软件或PDF工具的产品可以将PDF文件转换为PDF/A。

“解决方案2:输出意图(Outputinent)使用单个ICC配置文件实现所有设备颜色的特征化(对整个文档有效)。”