Obter uma prévia do JPEG de um PDF no Windows?
Pergunta
Tenho um aplicativo multiplataforma (Python) que precisa gerar uma visualização JPEG da primeira página de um PDF.
No Mac estou gerando goles.Existe algo igualmente simples que eu possa fazer no Windows?
Solução
De qualquer forma, o ImageMagick delega a conversão PDF->bitmap para o GhostScript, então aqui está um comando que você pode usar (é baseado no comando real listado pelo ps:alpha
delegado no ImageMagick, apenas ajustado para usar JPEG como saída):
gs -q -dQUIET -dPARANOIDSAFER -dBATCH -dNOPAUSE -dNOPROMPT \
-dMaxBitmap=500000000 -dLastPage=1 -dAlignToPixels=0 -dGridFitTT=0 \
-sDEVICE=jpeg -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r72x72 \
-sOutputFile=$OUTPUT -f$INPUT
onde $OUTPUT
e $INPUT
são os nomes dos arquivos de saída e entrada.Ajusta a 72x72
para qualquer resolução que você precisar.(Obviamente, retire as barras invertidas se estiver escrevendo o comando inteiro em uma linha.)
Isso é bom por dois motivos:
- Você não precisa mais ter o ImageMagick instalado.Não que eu tenha algo contra o ImageMagick (adoro demais), mas acredito em soluções simples.
- ImageMagick faz uma conversão em duas etapas.Primeiro PDF->PPM, depois PPM->JPEG.Dessa forma, a conversão é feita em uma etapa.
Outras coisas a considerar:com os arquivos que testei, o PNG é compactado melhor que o JPEG.Se você quiser usar PNG, altere o -sDEVICE=jpeg
para -sDEVICE=png16m
.
Outras dicas
Você pode usar o utilitário de conversão do ImageMagick para isso, veja alguns exemplos em http://studio.imagemagick.org/pipermail/magick-users/2002-May/002636.html :
Convert taxes.pdf taxes.jpg
Converterá um arquivo PDF de duas páginas em [2] arquivos jpeg:Taxes.jpg.0, taxes.jpg.1
Também posso converter esses JPEGS em miniaturas da seguinte maneira:
convert -size 120x120 taxes.jpg.0 -geometry 120x120 +profile '*' thumbnail.jpg
Posso até converter o PDF diretamente em uma miniatura JPEG da seguinte maneira:
convert -size 120x120 taxes.pdf -geometry 120x120 +profile '*' thumbnail.jpg
Isso resultará em uma miniatura.jpg.0 e miniatura.jpg.1 para as duas páginas.
É provável que o PC tenha o Acrobat instalado?Acho que o Acrobat instala uma extensão de shell para que as visualizações da primeira página de um documento PDF apareçam na visualização de miniaturas do Windows Explorer.Você mesmo pode obter miniaturas por meio da API COM IExtractImage, que precisará agrupar. VBAccelerator tem um exemplo em C# que você poderia portar para Python.