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 PNG e JPEG, uma imagem por página, e mantém o tamanho exato da imagem, sem recompressão. Não há margem adicionada, e o resultado segue a mesma regra de 1 pixel por ponto descrita acima, por isso a página não sai em A4. Se o destino exige A4, monte o PDF com o img2pdf e a opção -s A4.
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 de fotos em tamanho cheio quase não encolhe com a compressão, porque a foto já está a 72 DPI efetivos. Reduza as fotos antes de montar, para 1600 a 2000 px no lado maior. Se as imagens vieram de digitalizações em 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.
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 AjustaPDF também não aceita HEIC, e o img2pdf trabalha com JPEG e PNG. Converta a foto para JPEG antes, com a ferramenta do sistema ou do próprio celular, e só então monte o PDF.
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.
Dá para fazer o mesmo sem terminal, pelo navegador?
Dá, pela ferramenta de imagem para PDF do AjustaPDF. Ela aceita PNG e JPEG, uma imagem por página, e mantém o tamanho exato da imagem, sem recompressão. Como o processamento é no servidor, confira a política de privacidade antes de enviar documentos pessoais.