Als ich das letzte Mal convert
eine 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 convert
Befehl verwendet nicht immer DPI als Standardeinheit für Dichte / Seitenformat, daher geben wir DPI explizit mit der -units
Option 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 convert
das 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 -repage
Option wegzulassen . Manchmal ist dies jedoch erforderlich, und ohne diese Option enthält der PDF-Header möglicherweise zu kleine Abmessungen. Auf jeden Fall -repage
sollte das nicht schaden.
Die Berechnungen verwenden Integer-Arithmetik, da dies bash
nur unterstützt wird. Mit können zsh
die 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 img2pdf
ist 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 a4
ich es benutze bekomme ich eineninvalid argument for option '-repage': a4