Atualmente, estou usando o ImageMagick para converter PDFs em imagens raster JPEG. É dolorosamente lento e consome muita memória.
O comando que eu usei foi:
convert -geometry 1024x768 -density 200 -colorspace RGB foo.pdf bar%02d.jpg
Eu acho que é lento porque usa Ghostscript. Mas deve haver uma maneira mais rápida de fazer isso em uma caixa Linux.
Alguém encontrou uma solução melhor?
pdf
imagemagick
ghostscript
mat3001
fonte
fonte
Respostas:
Usar o Ghostscript diretamente (em vez de usar o
convert
comando ImageMagick , que chama Ghostscript indiretamente) é realmente mais rápido. E oferece mais controle sobre os parâmetros de conversão. ExperimentarOnde
-o
: determina o caminho de saída + nome do arquivo (e economiza o uso de-dBATCH -dNOPAUSE
)-dJPEGQ
: define a qualidade JPEG para 95%-r
: define a resolução para 600 dpi-g
: define o tamanho da imagem para 4960x7016px-sDEVICE
: define a saída como JPEGEste comando provavelmente ainda será lento para você e criará arquivos maiores que o esperado. Para tamanhos de arquivos menores e execução mais rápida, tente isso (o que provavelmente se aproxima da qualidade de saída da sua
convert
linha de comando):ou mesmo
(com resolução de 72 dpi, geralmente boa o suficiente para a maioria das telas e para a maioria dos aplicativos da web).
fonte
Aliás, uma das razões pelas quais o ImageMagick é muito mais lento é que ele chama Ghostscript duas vezes. Ele não converte PDF => PNG de uma só vez, mas usa 2 etapas diferentes:
PDF => PostScript
conversão;PostScript => PNG
conversão.Você pode aprender sobre as configurações detalhadas "delegados" do ImageMagick (os programas externos que o ImageMagick usa, como o Ghostscript), digitando
(No meu sistema, há uma lista de 32 comandos diferentes.) Agora, para ver quais comandos são usados para converter em PNG, use o seguinte:
Ok, isso foi para Linux. Se você estiver no Windows, tente o seguinte:
Você descobrirá que o MI produz PNG apenas a partir da entrada PS ou EPS. Então, como o IM obtém (E) PS do seu PDF? Fácil:
Ah! Ele usa o Ghostscript para fazer uma conversão em PDF => PS e, em seguida, usa o Ghostscript novamente para fazer uma conversão em PS => PNG. Funciona, mas não é a maneira mais eficiente se você souber que o Ghostscript pode fazer PDF => PNG de uma só vez. E mais rápido. E com qualidade muito melhor.
Sobre o manuseio de mensagens instantâneas pela conversão de PDF em imagens via delegado Ghostscript, você deve saber duas coisas antes de tudo:
-density 600
como umconvert
parâmetro que diz ao Ghostscript para usar uma resolução de 600 dpi para a saída da imagem.PDF => PS
e depoisPS => PNG
é um verdadeiro erro. Porque você nunca ganha e mantém a qualidade no primeiro passo, mas muitas vezes perde alguns. Razões:(Conversão na direção oposta
PS => PDF
, portanto não é tão crítico ....)É por isso que sugeri que você converta seus PDFs de uma só vez para PNG (ou JPEG) usando o Ghostscript diretamente. E use a versão mais recente 8.71 (a ser lançada em breve: 9.00) do Ghostscript ...
fonte
O programa
pdftoppm
do pacote poppler também é capaz de criar JPEGs e, para mim, é duas vezes mais rápido dogs
que o descrito acima:fonte
Na minha experiência, o MuPDF é muito mais rápido que o Ghostscript. É um projeto muito mais recente, sem grande parte do lixo em gs. Experimente se ele se encaixa no seu caso!
mudraw -w 1024 -h 768 -r 200 -c rgb -o bar%d.png foo.pdf
Se você possui uma distribuição Linux mais antiga e instalou o mupdf-tools a partir do repositório,
mudraw
ainda poderá ser chamadopdfdraw
Você precisa converter o png para jpeg usando, por exemplo, imagemagick. Mas ainda será mais rápido que o Ghostscript.
fonte