Com a ajuda de um desenvolvedor do GhostScript neste relatório de erros , consegui resolver o /N
problem. Lições aprendidas:
- O documento do GhostScript mencionado em minha pergunta está desatualizado. O documento atual, aqui , diz que ProcessColorModel = DeviceRGB está correto.
- Perfis ICC descrevem um espaço de cores. Alguns espaços de cores válidos são CINZENTO, RGB e CMYK. Você pode verificar o espaço de cores de um perfil ICC usando o Inspetor de Perfis ICC gratuito .
- Na seção do arquivo PDF que causa erros de validação,
/N
representa o número de corantes. - O arquivo PDFA_def.ps emite o valor
/N
. A amostra incluída no Ghostscript 9.07 emite apenas/N 1
(para ProcessColorModel = DeviceGray) ou/N 4
(para qualquer outro ProcessColorModel). - Meu teste original especificado ProcessColorModel = DeviceCMYK que causou
/N 4
, mas usou um perfil ICC descrevendo um espaço de cores RGB. Os validadores captaram corretamente essa discrepância: eu prometi 4 cores, mas apenas descrevi 3.
A maioria dos perfis ICC encontrados para monitores e impressoras de escritório descrevem um espaço de cores RGB. (O CMYK parece mais específico para impressoras de alta qualidade e certos tipos de papel.) Para os meus propósitos, o RGB é preferível. O arquivo de lote a seguir converte um arquivo PDF em PDF / A-1b com um espaço de cor 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
Em PDFA_def.ps, especifique um perfil ICC que descreva um espaço de cores RGB e altere a seção para definir um perfil ICC da seguinte forma:
% Define an ICC profile :
[/_objdef {icc_PDFA} /type /stream /OBJ pdfmark
[{icc_PDFA} <</N systemdict /ProcessColorModel get /DeviceGray eq {1} {systemdict /ProcessColorModel get /DeviceRGB eq {3} {4} ifelse} ifelse >> /PUT pdfmark
[{icc_PDFA} ICCProfile (r) file /PUT pdfmark
A linha longa inclui uma instrução ifelse
aninhada que detectará ProcessColorModel = DeviceRGB e emitirá o /N 3
apropriado. O arquivo resultante deve passar pela validação em pdf-tools.com .
Atualização: criei um programa em lote um pouco mais eficiente e o publiquei em um post no blog: Lote Converter PDF para PDF / A .