Imagens para PDF no terminal com ImageMagick e img2pdf
Como montar PDF de imagens no terminal com img2pdf e ImageMagick, sem recomprimir as fotos, e por que a página sai gigante. Comandos, tabela e limites.
Para juntar imagens num PDF pelo terminal sem recomprimir as fotos, use o img2pdf: img2pdf foto1.jpg foto2.jpg -o saida.pdf. Cada imagem vira uma página, na ordem em que foi escrita. O ImageMagick faz o mesmo com o comando magick, mas costuma regravar a imagem. Só aceite o tamanho de página que ele escolher depois de conferir o resultado.
Quando usar img2pdf e quando usar ImageMagick
As duas ferramentas montam PDF a partir de imagens, mas tratam a imagem de formas diferentes. O img2pdf copia o JPEG para dentro do PDF do jeito que ele está, e por isso a qualidade e o tamanho do arquivo ficam próximos do original. O ImageMagick abre a imagem, processa e grava de novo, o que dá mais controle sobre tamanho e formato, mas pode perder qualidade a cada gravação.
| Situação | Ferramenta indicada | Por que |
|---|---|---|
| Fotos já em JPEG que precisam manter a qualidade | img2pdf | Embute o JPEG sem recompressão |
| Imagens em PNG com transparência | ImageMagick | Trata a transparência ao converter o formato |
| Redimensionar ou girar as imagens antes de montar | ImageMagick | Faz as operações de imagem antes de gravar o PDF |
| Lote grande, sem precisar mexer nas fotos | img2pdf | Rápido, porque não reprocessa cada pixel |
Instalar as ferramentas
O img2pdf é um pacote Python e se instala com o gerenciador pip. O ImageMagick é um programa à parte, que costuma vir no gerenciador de pacotes do sistema. Depois da instalação, confirme as versões com img2pdf --version e magick -version. Se a versão do ImageMagick for antiga, o comando pode ser convert, e não magick.
Os exemplos abaixo usam foto1.jpg, foto2.jpg e assim por diante, na mesma pasta do terminal. Troque os nomes pelos seus arquivos.
Montar o PDF com img2pdf
- Coloque as imagens na mesma pasta e confirme os nomes com ls, para não errar a ordem.
- Rode img2pdf foto1.jpg foto2.jpg foto3.jpg -o saida.pdf. A ordem dos nomes na linha de comando é a ordem das páginas.
- Abra o saida.pdf num leitor e confira o número de páginas e a orientação de cada uma.
- Se as páginas saírem com tamanho estranho, rode de novo com a opção de tamanho de página A4. Consulte img2pdf --help na sua versão para o formato exato da opção.
Montar o PDF com ImageMagick
O comando magick foto1.jpg foto2.jpg saida.pdf gera um PDF com uma página por imagem. O ImageMagick, por padrão, grava as imagens com a própria codificação, então confira o tamanho e a nitidez antes de usar o arquivo. Se precisar de uma largura fixa, redimensione antes com a opção de resize, por exemplo magick -density 150 foto1.jpg -resize 1240x1754 saida.pdf, que gera páginas de cerca de 595 × 793 pontos, quase A4, sem esticar a foto. Sem o -density 150, a mesma redução vira uma página de cerca de 1240 × 1653 pontos, bem maior que A4.
O tamanho da página: o que define
Esse é o ponto que mais confunde. Num PDF, a página é medida em pontos, e um ponto vale 1/72 de polegada. Na montagem direta com ImageMagick, sem DPI definido, cada pixel vira um ponto, então uma foto de celular de 3000 × 4000 pixels gera uma página gigante, perto de 106 × 141 cm. Com o img2pdf, sem DPI informado na foto, a conta usa 96 pontos por polegada e a mesma foto sai perto de 79 × 106 cm. É por isso que o arquivo imprime enorme, ou sai fora de escala no leitor.
Se a imagem tem DPI gravado nos metadados, o tamanho da página pode seguir esse valor. Só que nem toda foto traz essa informação, e a câmera do celular costuma gravar um DPI que não corresponde ao tamanho real de impressão. Por isso, não confie no tamanho automático para uma impressão exata. Defina o tamanho da página ou redimensione a imagem antes.
Formatos aceitos e o que converter antes
O img2pdf e o ImageMagick aceitam os formatos comuns, como JPEG e PNG. Fotos do iPhone em HEIC precisam ser convertidas antes. A conversão pode ser feita pelo próprio celular, ao compartilhar a foto como JPEG, ou por uma ferramenta de linha de comando com suporte a HEIF. O guia sobre HEIC do iPhone que não entra no PDF mostra as opções no celular.
Para escolher entre PNG e JPEG antes de montar, o critério é simples: foto vai em JPEG, e print, texto ou desenho com fundo transparente vai em PNG. O guia PNG ou JPG para páginas de PDF detalha esse caso.
Uma alternativa pelo navegador
Se o trabalho é pontual e não precisa de terminal, a ferramenta imagem para PDF do AjustaPDF monta o arquivo no navegador. Ela aceita JPEG, PNG, HEIC do iPhone, WebP e TIFF, uma imagem por página, e respeita a rotação gravada na foto. O tamanho da página pode ser A4 (o padrão), Carta ou o tamanho de cada imagem, com margem opcional. No modo de tamanho da imagem, vale a mesma regra de 1 pixel por ponto descrita acima.
O que nenhuma das duas faz
Nem o img2pdf nem o ImageMagick corrigem a imagem de origem. Se a foto está torta, o PDF sai torto; se a foto tem sombra, a sombra vai para o PDF. Para endireitar ou limpar um scan, é preciso tratar a imagem antes de montar. O guia sobre scan torto no PDF trata desse caso.
Depois de montado, o PDF também precisa de cuidado com o peso. Um PDF montado no modo de tamanho de cada imagem quase não encolhe com a compressão, porque a foto já está a 72 DPI efetivos. Nesse caso, reduza as fotos antes de montar, para 1600 a 2000 px no lado maior. Se o PDF saiu em página A4, a compressão do AjustaPDF no nível médio reduz bastante. O guia sobre juntar e comprimir PDF no Linux mostra como fazer a compressão no próprio terminal.
Como conferir o arquivo final
Abra o PDF e confira três coisas: o número de páginas, a ordem das imagens e o tamanho da página. Amplie uma foto até 200% para ver se a nitidez se manteve. Se a página não é A4 e o destino exige A4, refaça o PDF com o img2pdf e -s A4, porque o tamanho da página é gravado na montagem.
Para as imagens, veja o que é um arquivo DNG/RAW e converter TIFF em PDF; sem linha de comando, TIFF para PDF.
Perguntas frequentes
Qual a diferença entre img2pdf e ImageMagick para montar PDF de imagens?
O img2pdf embute cada JPEG no PDF sem recompressão, então a qualidade fica como estava. O ImageMagick decodifica e grava a imagem de novo por padrão, o que pode reduzir a qualidade ou mudar o tamanho. Para foto já em JPEG, o img2pdf costuma ser a escolha mais fiel.
Por que o PDF gerado a partir da foto sai com página enorme?
Porque a página recebe o tamanho da imagem em pontos, e o DPI da foto define quantos pixels cabem em cada ponto. Sem DPI definido, o ImageMagick usa 1 pixel por ponto: uma foto de 3000 × 4000 pixels vira uma página de cerca de 106 × 141 cm. Com o img2pdf, a conta parte de 96 DPI quando a foto não informa DPI, e a mesma foto sai perto de 79 × 106 cm. Para A4, use a opção de tamanho de página do img2pdf (-s A4).
Dá para converter HEIC direto no img2pdf?
Não. O img2pdf trabalha com JPEG e PNG, então converta a foto para JPEG antes, com a ferramenta do sistema ou do próprio celular. Já a ferramenta de imagem para PDF do AjustaPDF aceita HEIC do iPhone direto.
Como ter uma margem branca em volta da imagem no PDF?
Nenhuma das duas ferramentas adiciona margem por padrão: a página tem o tamanho exato da imagem. Se quiser margem, defina o tamanho da página maior que a imagem e centralize a foto, usando a opção de ajuste de tamanho da ferramenta. A imagem para PDF do AjustaPDF tem opção de margem.
Dá para fazer o mesmo sem terminal, pelo navegador?
Dá, pela ferramenta de imagem para PDF do AjustaPDF. Ela aceita JPEG, PNG, HEIC do iPhone, WebP e TIFF, uma imagem por página, e deixa escolher entre página A4 (o padrão), Carta ou o tamanho de cada imagem, com margem opcional. Como o processamento é no servidor, confira a política de privacidade antes de enviar documentos pessoais.