Salve amigos, espero que tenham tido um bom carnaval.
Nesta quarta feira de cinzas trago um pequeno mas útil tutorial para converter imagens em arquivos PDF (Portable Document Format), e posteriormente unir estas imagens em único arquivo PDF.
Meu objetivo era criar um pequeno portfólio de sites produzidos para mostrar em um local onde não tem internet. O resultado final ficou muito legal, então resolvi compartilhar com todos.
Preparar este quitute é muito simples. É necessário contudo que você os seguintes ingredientes da mistura:
A extensão do Firefox Screengrab! permite a capturar um site por inteiro, independente do comprimento da página, e salvar em um arquivo PNG (Portable Network Graphic). Na verdade ela só foi necessária na solução do meu problema específico, mas caso queira unir imagens de outras fontes, a extensão é totalmente desnecessária.
As aplicações sam2p e pdftk permitem respectivamente converter imagens em arquivos PDF e unir vários arquivos PDF em um só. Eles estão disponíveis através do comando de terminal sudo apt-get install pdftk sam2p (no caso da distro Debian e derivados) ou no Synaptics mais perto de você.
Agora vamos por a mão na massa. Depois de obter as imagens a partir de qualquer fonte (no meu caso usei o Screengrab! para coletar screens de sites que eu desenvolvi), você deve convertê-las em PDF usando o programa sam2p. Sua sintaxe é simples: sam2p arquivo.png arquivo.pdf. As seguintes mensagens serão impressas no terminal:
sam2p ProteusNet.png ProteusNet.png.pdf
This is sam2p v0.45-3.
Available Loaders: PS PDF JAI PNG JPEG TIFF PNM BMP GIF LBM XPM PCX TGA.
Available Appliers: XWD Meta Empty BMP PNG TIFF6 TIFF6-JAI JPEG-JAI JPEG PNM GIF89a+LZW XPM PSL1C PSL23+PDF PSL2+PDF-JAI P-TrOpBb.
sam2p: Notice: PNM: loaded alpha, but no transparent pixels
sam2p: Notice: job: read InputFile: ProteusNet.png
sam2p: Notice: writeTTT: using template: p02bb
sam2p: Notice: applyProfile: applied OutputRule #28
sam2p: Notice: job: written OutputFile: ProteusNet.png.pdf
Success.
Você terá que fazer isso para cada imagem que deseje converter em PDF. Infelizmente o sam2p não suporta wildcards. Uma pessoa mais elegante que eu faria um script bash e resolveria o problema, mas isso eu deixo para algum especialista que deseje complementar o artigo.
Agora basta utilizar o programa pdftk para unir os aquivos convertidos em um único grande arquivo PDF. Uma dica: Não use acentos nos nomes dos arquivos, ou terá problemas. Acesse a pasta onde está os arquivos e digite o seguinte comando: pdftk *.pdf cat output arquivo.pdf. Se você não tiver nenhum arquivo com acentos, o programa irá trabalhar sem dar nenhum pio, e no final você terá seu arquivo PDF, onde cada imagem é uma página a parte.
Outra dica: Se você deseja que as imagens possuam alguma ordenação, renomeie os arquivos, colocando uma numeração no início do nome do arquivo. Por exemplo, XYZ.pdf, abc.pdf e 23s.pdf viram respectivamente 01 XYZ.pdf, 02 abc.pdf e 03 23s.pdf.
É isso. Espero que tenham gostado deste simples porém útil tutorial.
Pessoal, o Augusto Campos, que também mantém o Br-Linux, entrou em contato comigo por email e me informou uma forma super simples de fazer o que eu descrevi acima. Basta utilizar o comando convert na pasta onde estão as imagens desejadas. Simplesmente faça:
convert *.jpg arquivo.pdf
Confesso que eu já sabia disso, pois pesquisei bastante na net para chegar no procedimento acima, e eventualmente encontrei o comando convert. Só que quando testei aqui, o PDF gerado era inválido, e não era lido pelo Evince, que exibia uma mensagem de erro. Caso contrário teria colocado evidentemente a forma mais prática.
Isso me deixou bem confuso, pois assim que recebi o email do Augusto, fiz um teste, mixando imagens JPG, GIF e PNG em um único PDF (usei convert *.jpg *.gif *.png output.pdf) e desta vez funcionou certinho. Testei imagens com acentos, espaços e | no nome do arquivo, mas não tive problemas desta vez. A única coisa que não testei foi utilizar imagens realmente grandes, pois alguns dos screenshots dos sites tinham mais de 15000 pixels de altura.
Mas enfim, a dica foi ótima afinal. Quem quiser baixar o arquivo que utilizei de teste (imagens GIF, JPG e PNG), basta clicar aqui.
copyright © Marcus VBP, Todos os direitos reservados
Permitida a cópia desde que citado a fonte. [Política de Privacidade]
Powered by Drupal CMS.
1. Convertendo várias imagens em PDF e depois unindo-as em um *
2. Rodrigo Dutra*
Ótima dica!!!
3. Fernando*
Muito interessante mesmo, valeu pela dica!
4. gaijin*
para criar todos os arquivos pdf em linux use este comando como base:
for i in *.pnm; do sam2p "$i" "$i.pdf"; done
ele vai fazer um loop em todos os arquivos no caso com extenção .pnm e converte-los para o mesmo nome com extenção .pdf
5. Santos*
Bom dia.
Esse comando "convert *.jpg arquivo.pdf" tem algum tipo de limitador? Acontece que tenho uma pasta com mais de 200 imagens .jpg, e o comando retorna "Finalizado", no terminal, mas não gera o arquivo .pdf!
Fiz alguns testes com menos imagens (50, até 80), e funcionou beleza.
Você sabe o que está acontecendo de errado?
Muito obrigado e parabéns pelo post!
6. Marcus VBP
Oi Santos... Cara, que eu saiba não existe limitação não... Pode ser que alguns arquivos estejam com caracteres estranhos no nome, como acentos ou espaços, e isso tá atrapalhando a conversão. Se não for isso, não sei te dizer.
7. Weliton Oliveira*
Tem esse Tutorial para Windows????
Linux é uma PORCARIA!!!!!!!
8. Elvis*
Excelente Receita... thank's man
9. Elvis*
Seu Mane,
Irrelevante seu comentário.
Aposto que você demoraria um dia para fazer esse procedimento do forum com 500 paginas...
Fiz isso em 2 minutos com apenas dois simples
comandos... rsrs Manezão continua usando windows...
Enviar novo comentário