Compacte um PDF usando ghostscript, mas sem compactar algumas páginas selecionadas e preservando os marcadores

0

Eu tenho um arquivo pdf, feito com Latex, que eu quero compactar. Eu costumo fazer isso com

$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dEmbedAllFonts=true -dSubsetFonts=true -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=out.pdf in.pdf

que preserva marcadores e hiperlinks internos, por exemplo, para uma determinada figura ou para um determinado item da bibliografia.

Geralmente funciona bem, já que a redução da resolução é apenas para imagens, que eu incluo usando arquivos JPG ou PNG, e não para gráficos ou esquemas, que eu gostaria de incluir usando arquivos PDF totalmente vetoriais. Desta forma, se alguém decidir ampliar o pdf para ver alguns detalhes, ainda é possível.

Desta vez, eu tenho uma única página que inclui um esquema, que pode ser exportado com alta resolução para pdf a partir do programa de layout, mas que infelizmente não é vetorial, mas sim raster. Quando eu comprimir com gs, isso é reduzido para 300dpi e, portanto, os detalhes não são zoomable. Eu sei, se impresso, os detalhes seriam invisíveis, mas quando vistos on-line eu gostaria de deixar a possibilidade de vê-los.

Eu tentei com o qpdf (infelizmente eu não posso usar o pdftk, já que ele foi removido do OpenSuse devido à remoção do gcj) sem sucesso algum.

O que eu tentei foi dividir o pdf em 3 partes, comprimir o primeiro e o último, juntá-los e linearizar, mas os marcadores foram perdidos.

$ qpdf in.pdf --pages in.pdf 1-77 -- in.1_77.pdf
$ qpdf in.pdf --pages in.pdf 79-z -- in.79_end.pdf
$ qpdf in.pdf --pages in.pdf 78 -- in.78.pdf
$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dEmbedAllFonts=true -dSubsetFonts=true -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=in.1_77.gs.pdf in.1_77.pdf
$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dEmbedAllFonts=true -dSubsetFonts=true -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=in.79_end.gs.pdf in.79_end.pdf
$ qpdf in.pdf --pages in.1_77.gs.pdf in.78.pdf in.79_end.gs.pdf -- out.gs.pdf
$ qpdf --linearize out.gs.pdf out.gs.lin.pdf

Infelizmente não funciona. Existe uma maneira de fazer isso?

Uma segunda pergunta. qpdf tem uma sintaxe de entrada estranha, que talvez eu esteja entendendo mal:

$ qpdf in.pdf --pages in.1_77.gs.pdf in.78.pdf in.79_end.gs.pdf -- out.gs.pdf

Por que eu posso usar um determinado arquivo de entrada (in.pdf) e depois pegar as páginas de outros arquivos (in.1_77.gs.pdf in.78.pdf in.79_end.gs.pdf)? Eu acho que é para manter os metadados relativos ao arquivo de entrada, mas provavelmente este não é o caso.

    
por Alex Pacini 26.10.2018 / 11:17

0 respostas