Als ich das letzte Mal converteine solche Aufgabe ausgeführt habe, habe ich die Größe des Ziels explizit über die Größenänderung angegeben:
$ 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
Der convertBefehl verwendet nicht immer DPI als Standardeinheit für Dichte / Seitenformat, daher geben wir DPI explizit mit der -unitsOption an (andernfalls erhalten Sie möglicherweise unterschiedliche Ergebnisse mit unterschiedlichen Versionen / Eingabeformatkombinationen). Die neue Größe (angegeben über -resize) ist die Abmessung einer DIN A4-Seite in Pixel. Das Argument resize gibt die maximale Seitengröße an. Welche Auflösung und Qualität genau ausgewählt werden muss, hängt vom Anwendungsfall ab. Ich habe 150 DPI und eine durchschnittliche Qualität ausgewählt, um Platz zu sparen, während es beim Drucken auf Papier nicht allzu schlecht aussieht.
Beachten Sie, dass convertdas Seitenverhältnis bei der Größenänderung standardmäßig nicht geändert wird:
Größe ändern passt das Bild in die gewünschte Größe. Es wird NICHT die gewünschte Kartongröße gefüllt.
( ImageMagick Handbuch )
Abhängig von der ImageMagick-Version und den beteiligten Eingabeformaten ist es möglicherweise in Ordnung, die -repageOption wegzulassen . Manchmal ist dies jedoch erforderlich, und ohne diese Option enthält der PDF-Header möglicherweise zu kleine Abmessungen. Auf jeden Fall -repagesollte das nicht schaden.
Die Berechnungen verwenden Integer-Arithmetik, da dies bashnur unterstützt wird. Mit können zshdie Ausdrücke vereinfacht - dh durch ersetzt werden $((i*8.27))x$((i*11.69)).
Lineart Images
Wenn es sich bei den PNG-Dateien um Bilder mit zwei Ebenen (Schwarzweiß oder Lineart) handelt img2pdf, liefert das Tool bessere Ergebnisse als ImageMagick convert. Das heißt, es img2pdfist schneller und liefert kleinere PDFs.
Beispiel:
$ img2pdf -o multipage.pdf a.png b.png
oder:
$ img2pdf --pagesize A4 -o multipage.pdf a.png b.png
-repage a4ich es benutze bekomme ich eineninvalid argument for option '-repage': a4