
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 com
malloc 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.