A última vez que usei convertpara essa tarefa, especifiquei explicitamente o tamanho do destino via redimensionamento:
$ i=150; convert a.png b.png -compress jpeg -quality 70 \
-density ${i}x${i} -units PixelsPerInch \
-resize $((i*827/100))x$((i*1169/100)) \
-repage $((i*827/100))x$((i*1169/100)) multipage.pdf
O convertcomando nem sempre usa o DPI como unidade padrão de densidade / formato de página; portanto, especificamos explicitamente o DPI com a -unitsopção (caso contrário, você poderá obter resultados diferentes com diferentes combinações de versões / formatos de entrada). O novo tamanho (especificado via -resize) é a dimensão de uma página DIN A4 em pixels. O argumento de redimensionamento especifica o tamanho máximo da página. Qual resolução e qualidade escolher exatamente depende do caso de uso - selecionei 150 DPI e qualidade média para economizar espaço, embora não pareça muito ruim quando impresso em papel.
Observe que, convertpor padrão, não altera a proporção da imagem com a operação de redimensionamento:
Redimensionar ajustará a imagem ao tamanho solicitado. NÃO preenche, o tamanho da caixa solicitada.
( Manual ImageMagick )
Dependendo da versão do ImageMagick e dos formatos de entrada envolvidos, pode ser correto omitir a -repageopção. Às vezes, porém, é necessário e, sem essa opção, o cabeçalho do PDF pode conter dimensões muito pequenas. De qualquer forma, -repagenão deve doer.
Os cálculos usam aritmética inteira, uma vez que bashapenas suporta isso. Com zshas expressões podem ser simplificadas - ou seja, substituídas por $((i*8.27))x$((i*11.69)).
Imagens de Lineart
Se os arquivos PNG forem imagens em dois níveis (preto e branco, também conhecido como linear), a img2pdfferramenta produzirá resultados superiores ao ImageMagick convert. Isso significa que img2pdfé mais rápido e produz PDFs menores.
Exemplo:
$ img2pdf -o multipage.pdf a.png b.png
ou:
$ img2pdf --pagesize A4 -o multipage.pdf a.png b.png
-repage a4eu recebo uminvalid argument for option '-repage': a4