PDFBox — включение нескольких цветовых профилей при преобразовании в PDF / A

#pdf #pdfbox #pdfa

#PDF #pdfbox #pdfa

Вопрос:

В настоящее время мы пытаемся объединить несколько PDF-файлов и создать из них PDF / A (1B).

В настоящее время мы сталкиваемся с проблемой, когда хотим исправить цветовые профили. Полученный PDF-файл не имеет встроенных цветовых профилей, поэтому при объединении функций PDFBox выходные данные не объединяются. Итак, на последнем шаге мы пытаемся добавить цветовые профили.

Если мы не добавим ни одного цветового профиля, мы получим проблемы с проверкой для RGB и CMYK. Если мы добавим оба цветовых профиля в каталог PDDocument, то исчезнут только проблемы с проверкой для первого. Поэтому, если мы сначала добавим 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, мы также добавляем другой цветовой профиль * .icm для CMYK.
Таким образом, цветовые профили кажутся хорошими, потому что в зависимости от того, который мы добавляем первым, проблемы с проверкой исчезают.

Мне кажется, что нам просто не хватает небольшой детали, чтобы оба цветовых профиля были приняты, или, может быть, для создания PDF / A можно использовать только один цветовой профиль?

Заранее спасибо и с уважением

Комментарии:

1. pdfa.org/2011/08/pdfa-and-colors «Решение 2: Намерение вывода (OutputIntent) Определение характеристик всех цветов устройства осуществляется с использованием одного профиля ICC (действительного для всего документа).»

Ответ №1:

Допускается только одно назначение вывода, см. Здесь . Там также упоминается альтернатива, которая заключается в использовании только цветовых пространств на основе ICC.

Что должно быть возможным (хотя и выходит за рамки вопроса), так это назначить профили ICC для /DeviceGray, /DeviceRGB или /DeviceCMYK, добавив записи DefaultGray, defaulttrgb или DefaultCMYK в цветовые пространства в словаре ресурсов, как описано в разделе 8.6.5.6 спецификации PDF:

Когда выбрано цветовое пространство устройства, подраздел цветового пространства текущего словаря ресурсов (см. 7.8.3, «Словари ресурсов») проверяется на наличие записи, обозначающей соответствующее цветовое пространство по умолчанию (DefaultGray, defaulttrgb или DefaultCMYK, соответствующие DeviceGray, DeviceRGB или DeviceCMYK соответственно). Если такая запись присутствует, ее значение должно использоваться в качестве цветового пространства для выполняемой в данный момент операции.

Имейте в виду, что приведение PDF-файла в соответствие с PDF / A-1b часто сложнее, чем просто добавление выходных данных — проверьте файл с помощью предварительной проверки PDFBox или онлайн-валидатора из PDF Tools, там много возможных ошибок. Именно поэтому существуют продукты от Callas Software или PDF Tools, которые конвертируют файлы PDF в PDF / A.