Re-codificando apenas imagens de um PDF? (ou o ghostscript falha no RGB de 8 bits durante a otimização)

Eu preciso otimizar um grande número de documentos PDF para o tamanho do arquivo, então eu tentei usarghostscript, invocado assim:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -sOutputFile=output-my-doc.pdf input-my-doc.pdf

Eu posso ver isso correndo para algumas páginas, mas em determinadas páginas ele falha.

Eu atualizei parags versão 9.02, e eu experimento o mesmo. Após estourar o documento em páginas separadas e executar o comando acima em cada página, eu poderia confirmar quais páginas são problemáticas; na verdade, o erro ocorre mesmo se eu chamo apenasgs input-my-doc-pageX.pdf - isso inicia um visualizador e eu posso ver o texto digitado até chegar a uma imagem, quando ela falhou.

Então eu pude confirmar que no meu caso,gs falha em imagens específicas - e, finalmente, também posso fornecer um exemplo mínimo de funcionamento (ou melhor, não funciona), que demonstra o problema (abaixo). Em particular, o problema parece ser imagens RGB de 8 bits, especificadas de uma determinada maneira.

 

Agora, eu não posso dizer se isso é um bug, mas desde que eu preciso fazer isso - eu estava pensando que talvez eu pudesse "enganar"ghostscript, executando os PDFs por meio de um aplicativo, o que deixaria praticamente inalterados os PDFs - exceto que ele recodificaria as imagens em um único formato (digamos, PNG); de modo que ogs O otimizador também pode executar esses arquivos sem causar falhas.

Quais opções eu tenho para recodificar apenas as imagens de um determinado PDF usando a linha de comando no Linux?

Muito obrigado antecipadamente por qualquer resposta,
Felicidades!

 

PS: O caso de teste é basicamente oexemplo de PDF de código-fonte no post:Imagemagick: gerar dados de imagem bruta para incorporação de PDF flate?.

Esse PDF (hello2.pdf) abre muito bem em, digamos,evince:

... mas como o xref-table está corrompido, eu reparo:

$ pdftk hello2.pdf output hello2O.pdf
$ qpdf --check hello2O.pdf 
checking hello2O.pdf
PDF Version: 1.4
File is not encrypted
File is not linearized
No errors found

O arquivo reparadohello2O.pdf também abre bem emevince - no entanto, quando tento executar o acimags otimizar o comando nele, ele falha:

$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -sOutputFile=optihello2O.pdf hello2O.pdf
GPL Ghostscript 9.02 (2011-03-30)
Copyright (C) 2010 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1
Loading NimbusSanL-Regu font from /usr/share/ghostscript/9.02/Resource/Font/NimbusSanL-Regu... 2756020 1410650 1869284 568021 3 done.
Error: /undefined in --run--
Operand stack:
   --dict:6/15(L)--   false   --dict:11/19(L)--   --dict:4/4(L)--   --nostringval--   FlateDecode   --dict:4/4(L)--   0
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1910   1   3   %oparray_pop   1909   1   3   %oparray_pop   1893   1   3   %oparray_pop   --nostringval--   --nostringval--   2   1   1   --nostringval--   %for_pos_int_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %array_continue   --nostringval--   false   1   %stopped_push   --nostringval--   %loop_continue   --nostringval--   576   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %array_continue   --nostringval--   --nostringval--
Dictionary stack:
   --dict:1160/1684(ro)(G)--   --dict:1/20(G)--   --dict:82/200(L)--   --dict:82/200(L)--   --dict:108/127(ro)(G)--   --dict:295/300(ro)(G)--   --dict:23/30(L)--   --dict:6/8(L)--   --dict:25/40(L)--   --dict:7/17(L)--
Current allocation mode is local
GPL Ghostscript 9.02: Unrecoverable error, exit code 1

questionAnswers(1)

yourAnswerToTheQuestion