segunda-feira, 27 de fevereiro de 2012

Gerar imagens de PDFs pelo prompt de comando

Numa pasta cheia de arquivos PDFs, precisei criar imagens com suas capas. Compartilho com os leitores a solução que encontrei com o ImageMagick (no Windows).

ImageMagick para Windows: Windows Binary Release
(última versão no momento: 6.7.5-7)

32-bit: ImageMagick-6.7.5-7-Q16-windows-static.exe
64-bit: ImageMagick-6.7.5-7-Q16-windows-x64-static.exe

Para ele conseguir trabalhar com PDF é necessário o Ghostscript.
(última versão no momento: 9.02)

32-bit: gs902w32.exe
64-bit: gs902w64.exe

Instale em par, ou seja, se usar a versão 32-bit do ImageMagick, instale também a versão 32-bit do Ghostscript. Idem para 64-bit.

Agora crie um .cmd ou rode diretamente:

md capas
for %f in (*.pdf) do convert -define pdf:use-cropbox=true -density 300 "%f"[0] -geometry 800 -quality 85% "capas\%~nf-capa.jpg"

-define pdf:use-cropbox=true dependendo do PDF, é necessário para não ficar bordas. Achei aqui: ImageMagick: Formats

-density 300 (em dpi) faz supersampling para criar uma imagem de melhor qualidade. Se for para criar miniaturas, pode diminuir o valor para o processamento ser mais rápido. Quando não é especificado, o ImageMagick usa 72dpi.

-geometry 800 define a largura que você quer em pixels. A altura é automaticamente definida mantendo a proporção. Para fazer ao contrário, ou seja, para especificar a altura, coloque um x antes, como em x800. Se quiser forçar a imagem num determinado tamanho, não respeitando a proporção, use <largura>x<altura>!, como em 500x500!
Mais informações: ImageMagick: Command-line Processing

-quality 85% define a qualidade do arquivo jpg.

Sobre o comando FOR: http://technet.microsoft.com/pt-br/library/cc754900%28WS.10%29.aspx

Para extrair todas páginas de um PDF para imagens, basta não colocar o [0] (que indica a página) ao lado do nome do arquivo. O ImageMagick automaticamente cria as imagens adicionando o sufixo -0, -1, -2, etc. Mas cuidado! Com PDFs pesados e com várias páginas, usar a opção density muito alta faz o programa devorar processamento, memória, HD, tudo! Com um PDF de uma revista com mais de 150 páginas, usando 300dpi, ele comeu durante vários minutos mais de 3GB de RAM e colocou um arquivo temporário de mais de 4GB na parta TEMP do sistema. E não recomendo a versão 32-bit para essas conversões exigentes, pois fica mais lento ainda, fora o limite de 2GB de RAM por programa nos Windows 32-bit. Programas 32-bit dentro de Windows 64-bit têm limite de 4GB de RAM, contudo. Mesmo assim, neles, use as versões 64-bit do ImageMagick/Ghostscript.

Nota: aqui o valor de ter o perfil em outra unidade com um SSD. O ImageMagick criou seus arquivos temporários, que podem ser bem grandes, em D:\Users\Marcos\AppData\Local\Temp. Respira aliviado o SSD...

Nenhum comentário:

Postar um comentário