Visualize arquivos PDF extragrandes no Linux

Visualize arquivos PDF extragrandes no Linux

Eu tenho um arquivo PDF de 18000x18000px que gero via matplotlib. Antes de imprimir gostaria de visualizá-lo, com pelo menos 20% de zoom. Infelizmente, nada do que tentei até agora funciona:

  • evince só o abrirá com um nível de zoom máximo de 1,3%. Isso ocorreu depois de aumentar o tamanho do cache (por meio do editor dconf) para ~ 500 MB - aumentos adicionais (tentei até 8 GB) não melhoram o zoom máximo. Acredito que haja algum outro gargalo que desconheço.
  • mupdf falha commalloc of array (153904 x 615616 bytes) failed (integer overflow)
  • O Inkscape ocupa toda a minha RAM (16 GB) e depois congela.

Como alternativa, tentei exportá-lo como SVG e abri-lo com o inkscape, mas isso também preenche minha RAM e congela (mas mais lentamente).

Além disso, tentei dividir o arquivo em blocos complementares, sendo a primeira iteração:

pdfcrop --verbose --margins "10 10 10000 10000" --clip g.pdf out1.pdf

Isso já foi feito há algumas horas e não parece fazer muito progresso; pelo lado positivo, não está consumindo toda a minha RAM.

O Matplotlib também tem capacidade para exportar PS - mas dado o tamanho maior do PS, suspeito que isso seria ainda pior.

Você pode me ajudar a encontrar uma maneira de visualizar meu arquivo no Linux?

Caso você queira experimentar o arquivo, você pode encontrá-loaqui.

Responder1

Conforme indicado nos comentários, a melhor solução até agora foi cortar o PDF em blocos PNG. O comando básico para fazer isso usando o script fantasma é:

gs -o out.png -sDEVICE=pngalpha -g2000x2000 -dLastPage=1 -c "<</Install {-1000 -10000 translate}>> setpagedevice" -f in.pdf

Fui em frente e escrevi um script que pode receber o nome e a resolução do PDF e o tamanho do bloco como entradas e gerar blocos numerados. É bastante básico e pressupõe que a imagem e os blocos sejam quadrados. Você pode encontrá lono GitHub.

informação relacionada