С помощью разработчика GhostScript в этом отчете об ошибках я смог решить эту /N
проблему. Уроки выучены:
- Документ GhostScript, на который есть ссылка в моем вопросе, устарел. Нынешний документ, здесь, говорит, что ProcessColorModel = DeviceRGB хорошо.
- Профили ICC описывают цветовое пространство. Некоторые допустимые цветовые пространства: СЕРЫЙ, RGB и CMYK. Вы можете проверить цветовое пространство профиля ICC, используя бесплатный ICC Profile Inspector .
- В разделе PDF-файла, вызывающего ошибки проверки,
/N
представлено количество красителей. - Файл PDFA_def.ps выдает
/N
значение. Образец, включенный в Ghostscript 9.07, только излучает/N 1
(для ProcessColorModel = DeviceGray) или/N 4
(для любого другого ProcessColorModel). - Мой первоначальный тест указал ProcessColorModel = DeviceCMYK, который вызвал
/N 4
, но использовал профиль ICC, описывающий цветовое пространство RGB. Валидаторы правильно уловили это несоответствие: я обещал 4 цвета, но описал только 3.
Большинство профилей ICC, которые я нашел для дисплеев и офисных принтеров, описывают цветовое пространство RGB. (CMYK более специфичен для высокопроизводительных печатных машин и некоторых видов бумаги.) Для моих целей предпочтительнее использовать RGB. Следующий пакетный файл преобразует PDF-файл в PDF / A-1b с цветовым пространством RGB:
gswin32c ^ -dPDFA ^ -dNOOUTERSAVE ^ -sProcessColorModel=DeviceRGB ^ -dUseCIEColor ^ -sDEVICE=pdfwrite ^ -o %2 ^ -dPDFACompatibilityPolicy=1 ^ "C:\Program Files (x86)\gs\gs9.07\mylib\PDFA_def.ps" ^ %1
В PDFA_def.ps укажите профиль ICC, который описывает цветовое пространство RGB, и измените раздел для определения профиля ICC следующим образом:
% Define an ICC profile : [/_objdef /type /stream /OBJ pdfmark [ <</N systemdict /ProcessColorModel get /DeviceGray eq ifelse} ifelse >> /PUT pdfmark [ ICCProfile (r) file /PUT pdfmark
Длинная строка содержит вложенный ifelse
оператор, который обнаружит ProcessColorModel = DeviceRGB и выдаст соответствующий /N 3
. Полученный файл должен пройти проверку на pdf-tools.com .
Обновление: Я создал несколько более способный пакетную программу и опубликовал в своем блоге: Пакетное Преобразование PDF в PDF / A .