Ir para o conteúdo
5 min de leitura

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çãoFerramenta indicadaPor que
Fotos já em JPEG que precisam manter a qualidadeimg2pdfEmbute o JPEG sem recompressão
Imagens em PNG com transparênciaImageMagickTrata a transparência ao converter o formato
Redimensionar ou girar as imagens antes de montarImageMagickFaz as operações de imagem antes de gravar o PDF
Lote grande, sem precisar mexer nas fotosimg2pdfRá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

  1. Coloque as imagens na mesma pasta e confirme os nomes com ls, para não errar a ordem.
  2. Rode img2pdf foto1.jpg foto2.jpg foto3.jpg -o saida.pdf. A ordem dos nomes na linha de comando é a ordem das páginas.
  3. Abra o saida.pdf num leitor e confira o número de páginas e a orientação de cada uma.
  4. 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.