Como criar um documento PDF/X-3 com o Ghostscript

As boas gráficas, hoje, aceitam trabalhos em formato PDF/X-3. É o formato padrão da indústria gráfica. É melhor do que entregar arquivos “abertos” em formato Corel Draw, InDesign etc. Será a garantia de que não haverá modificações indesejáveis em suas publicações. Alguns programas modernos, como o software livre de editoração Scribus, já dão saída diretamente para PDF/X-3. No entanto, outros bons programas como o LibreOffice ainda não produzem PDF neste formato. Mas é fácil converter um PDF comum ou arquivo de saída PostScript em PDF/X-3 com o Ghostscript. Esta é a linha de comando (no ambiente Windows) para isto, que deve ser colocada num arquivo BAT de nome “prepress.bat” e usado na forma “prepress.bat meuarquivo.pdf”:

"%PROGRAMFILES%\gs\gs9.09\bin\gswin32.exe" -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sColorConversionStrategy=/CMYK -dPDFSETTINGS=/prepress -dProcessColorModel=/DeviceCMYK -dCompatibilityLevel=1.3 -sDownsampleColorImages=true -sDownsampleGrayImages=true -sDownsampleMonoImages=true -sOutputFile="%~n1_CMYK.pdf" -f "%PROGRAMFILES%\gs\gs9.09\Lib\pdfx_def.ps" -f %1

No arquivo pdfx_def.ps, a seguinte linha deve indicar um perfil de cor adequado para o trabalho de impressão:

/ICCProfile (c:/WIN/system32/spool/drivers/color/ISOcoated_v2_eci.icc) def

A documentação para estas opções do Ghostscript está, no Windows, em c:/Arquivos de programas/gs/gs9.06/doc/Ps2pdf.htm#PDFX, que mostro traduzida a seguir.

Para criar um documento a partir de um PDF/X-3 Postscript ou um arquivo PDF, você deve:

  1. Especificar o dispositivo pdfwrite ou usar o script ps2pdf.
  2. Especificar a opção -dPDFX. Ela proporciona a conformidade do documento e força -dCompatibilityLevel=1.3.
  3. Especificar -sProcessColorModel=DeviceGray ou -sProcessColorModel=DeviceCMYK (DeviceRGB não é permitido). Você deve especificar um ProcessColorModel, mesmo se você pretende criar um arquivo PDF colorido independente de dispositivo usando -dUseCIEColor.
  4. Especificar a opção -dUseCIEColor se necessário (ver adiante).
  5. Especificar um arquivo de definição de PDF/X antes de executar o documento de entrada. Ele fornece informações adicionais para ser incluído no documento de saída. Um exemplo de arquivo de definição de PDF/X pode ser encontrada em gs/lib PDFX_def.ps.
  6. Se uma condição de impressão de registro é aplicável, especificar seu identificador no arquivo de definição de PDF/X. Caso contrário, fornecer um perfil ICC e especificá-lo no arquivo de definição de PDF/X, conforme explicado abaixo.
  7. Fornecer um arquivo de recurso DefaultRGB na categoria de recursos ColorSpace. Ou defini-lo no arquivo de definição de PDF/X, ou fornecer uma definição de gs/Resource/ColorSpace/DefaultRGB. gs/Resource/ColorSpace/DefaultRGB é normalmente distribuído com Ghostscript, seu conteúdo não pode necessariamente satisfazer as suas necessidades, veja abaixo.

Como mencionado acima, o arquivo de definição de PDF/X fornece informação especial que o padrão PDF/X-3 requer. Você pode encontrar um arquivo de exemplo no gs/lib/PDFX_def.ps, e editá-lo de acordo com suas necessidades. O arquivo segue a sintaxe Postscript e usa o operador pdfmark para passar informações especiais. Para seu conforto, marcamos as linhas que possam precisar de edição no arquivo de exemplo com o comentário % Customize. Eles são explicados abaixo.

OutputCondition string
Define um valor para o dicionário OutputCondition de propósito de saída.
OutputConditionIdentifier string
Define um valor OutputConditionIdentifier para o dicionário de propósito de saída.
ICCProfile string
Pode ser omitido se OutputConditionIdentifier especifica um identificador registrado de condição de impressão caracterizado (ver http://www.color.org/IPA_2003-11_PDFX.pdf). Defina um nome de arquivo de perfil ICC a ser incluído no documento de saída. Você pode especificar um nome de arquivo absoluto, ou um caminho relativo do diretório de trabalho.
Title string
Define o título do documento. Só é útil se o arquivo Postscript fonte não define um título com comentários DSC. Caso contrário, remover toda a linha de arquivo de definição.
Info string
Define um valor de Informações para o dicionário de intenção de saída.

A norma PDF/X-3 exige ajuste de cores no momento de geração de documentos. Ghostscript não faz qualquer conversão cor especial. Ou as cores devem ser ajustadas com antecedência, ou uma conversão de cor adequada deve ser especificada nos recursos DefaultGray, DefaultRGB e DefaultCMYK da categoria de recurso ColorSpace.

Se você quiser alguma cor a ser convertida em cor CIE, a opção -dUseCIEColor deve ser especificada na linha de comando. Se não for especificada, apenas as cores RGB são convertidas em cores CIE com o uso do recurso de espaço de cor DefaultRGB, mas as cores DeviceGray e DeviceCMYK são passados de forma idêntica.

Note que, se um objeto gráfico não puder ser incorporado no formato de saída, Ghostscript o converte em objetos de baixo nível, utilizando um espaço de cores do dispositivo especificado na opção ProcessColorModel. Se você precisa ajustar as cores resultantes, você pode substituí-los com cores CIE, rodando Ghostscript uma segunda vez. Realizar as duas ações em uma única passagem é um ponto a ser melhorado.

A distribuição Ghostscript não contém um perfil ICC para ser usado para criar um documento PDF/X-3. Os usuários devem criar um apropriado, ou usar um de domínio público, ou criar uma com o inspetor PDF/X-3 freeware.

O padrão PDF/X-3 requer uma entrada TrimBox a ser escrita para todas as descrições de página. Trata-se de um conjunto de quatro deslocamentos que especificam como a página será cortada depois de ter sido impressa. Ele é definido como a mesma MediaBox por padrão, a menos que o parâmetro destilador PDFXTrimBoxToMediaBoxOffset esteja presente. Ele aceita compensações ao MediaBox como uma matriz [inferior direito canto superior esquerdo], por exemplo, o código de entrada PostScript << / PDFXTrimBoxToMediaBoxOffset [10 20 30 40] >> setdistillerparams especifica que 10 pontos serão aparadas à esquerda, 20 pontos no direita, 30 pontos no topo, e 40 pontos na parte inferior.

Outra entrada de página é o BleedBox. Ela dá a área da página para que os itens de saída reais pode ser estendidos; marcas de corte, barras de cor etc, devem ser posicionados na área entre o BleedBox e o MediaBox. O TrimBox está sempre contido dentro do BleedBox. Por padrão, o parâmetro destilador PDFXSetBleedBoxToMediaBox é true, e o BleedBox está definido para os mesmos valores que o MediaBox. Se for definido como false, o parâmetro PDFXBleedBoxToTrimBoxOffset dá deslocamento para o TrimBox. Aceita uma matriz de quatro valor no mesmo formato que o parâmetro PDFXTrimBoxToMediaBoxOffset.

Aqui está uma linha de comando para invocar Ghostscript para gerar um documento PDF/X-3:

gs -dPDFX -dBATCH -dNOPAUSE -dNOOUTERSAVE -dUseCIEColor -sDEVICE=pdfwrite -sOutputFile=out-x3.pdf PDFX_def.ps input.ps

Consulte também o controle PDFACompatibilityPolicy descrito em “Criar um documento PDF/A” abaixo. O mesmo controle agora é usado para especificar o comportamento desejado quando um arquivo de entrada não pode ser convertida “como está” em um arquivo PDF/X.

Criar um documento PDF/A

Para criar um documento PDF/A, siga as instruções para criar um documento PDF/X-3, com as seguintes exceções:

  1. Especifique o dispositivo pdfwrite ou usar o script ps2pdf.
  2. Especifique a opção -dPDFA para especificar PDF/A-1 ou PDF/A-2.
  3. Especifique -sProcessColorModel=DeviceGray, -sProcessColorModel=DeviceRGB ou -sProcessColorModel=DeviceCMYK. Você deve especificar um ProcessColorModel, mesmo se você pretende criar um arquivo de cores independente de dispositivo PDF usando -dUseCIEColor.
  4. Especifique a opção -dUseCIEColor, se necessário (ver PDF/X acima).
  5. Especifique um arquivo de definição PDF/A antes de executar o documento de entrada. Ele fornece informação adicional para ser incluída no documento de saída. Um exemplo de arquivo de definição PDF/A pode ser encontrado em gs/lib/PDFA_def.ps. Você vai precisar modificar o conteúdo deste arquivo. Em particular, você deve alterar /ICCProfile para que ele aponte para um perfil ICC válido para a sua OutputIntent. A string ‘(...)‘ definindo o ICCProfile deve ser um dispositivo totalmente qualificado e uma especificação caminho apropriada para seu sistema operacional.

Há um controle adicional para a saída PDF/A:

PDFACompatibilityPolicy Inteiro
Quando uma operação (por exemplo, pdfmark) é encontrada que não pode ser emitida em um arquivo compatível com PDF/A, esta política é consultada. Existem atualmente três valores possíveis:

0 – (default) Incluir o recurso ou operação no arquivo de saída. O arquivo não será compatível com PDF/A. Porque o catálogo documento é emitido antes de este é encontrado, o arquivo ainda conterá metadados PDF/A, mas não vai ser compatível. Um aviso será mostrado, neste caso.
1 – O recurso ou operação é ignorada. O arquivo PDF resultante será compatível com PDF/A. Um aviso será emitido para cada característica ignorada.
2 – Processamento do arquivo é abortada com um erro. O erro exato pode variar, dependendo da natureza da compatibilidade PDF/A.

Aqui está uma linha de comando para invocar Ghostscript para gerar um PDF/A documento:

gs -dPDFA=1 -dBATCH-dNOPAUSE -dNOOUTERSAVE -dUseCIEColor -sProcessColorModel=DeviceCMYK -sDEVICE=pdfwrite -sOutputFile=out-a.pdf PDFA_def.ps input.ps

Sobre José Antonio Meira da Rocha

Jornalista, professor de Planejamento Gráfico e Mídias Digitais da Universidade Federal de Santa Maria, campus da cidade de Frederico Westphalen, Rio Grande do Sul, Brasil. Doutorando em Design na UFRGS, Porto Alegre, Brasil, 2014.