1

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

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

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

预先感谢和亲切的问候

4

1 回答 1

1

只允许一个输出意图,请参见此处。那里还提到了一种替代方法,即仅使用基于 ICC 的色彩空间。

什么应该是可能的(尽管超出了问题的范围),将 ICC 配置文件分配给 /DeviceGray、/DeviceRGB 或 /DeviceCMYK,方法是在资源字典中添加 DefaultGray、DefaultRGB 或 DefaultCMYK 条目的 ColorSpaces,如在PDF 规范的第 8.6.5.6 节:

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

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

于 2016-10-13T09:45:05.487 回答