Marcus VBP

Desenvolvimento de Interfaces WEB

Comentários recentes

Tutorial: convertendo várias imagens em PDF e depois unindo-as em um único arquivo PDF [UPDATE IMPORTANTE]

06 FEV 2008

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.

Ingredientes necessários para a Receita

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ê.

preparando o prato

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:

citação:

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.

UPDATE Importante

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:

citação:

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.

RSS dos coment?ios deste post

4 Comentários:

imagem de  Convertendo várias imagens em PDF e depois unindo-as em um

1. Convertendo várias imagens em PDF e depois unindo-as em um *

Disse em qui, 07/02/2008 - 10:35
[...] por Marcus VBP (marcusviniciusbpΘgmail·com) - referência [...]
imagem de Rodrigo Dutra

2. Rodrigo Dutra*

Disse em qui, 07/02/2008 - 13:19

Ótima dica!!!

imagem de Fernando

3. Fernando*

Disse em seg, 11/02/2008 - 22:57

Muito interessante mesmo, valeu pela dica!

imagem de gaijin

4. gaijin*

Disse em sab, 29/03/2008 - 00:58

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

Enviar novo comentário

O conteúdo deste campo é privado não será exibido publicamente.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Você pode citar outras contribuições usando marcações [quote].
  • Endereços de páginas de internet e emails viram links automaticamente.
  • Linhas e parágrafos quebram automaticamente.
CAPTCHA
Esta questão é para testar sua humanidade e evitar o envio de SPAM.
Image CAPTCHA
Copy the characters (respecting upper/lower case) from the image.

copyright © Marcus VBP, Todos os direitos reservados

Permitida a cópia desde que citado a fonte. [Política de Privacidade]

Powered by Drupal CMS.