Ostatnim razem, gdy użyłem converttakiego zadania, wyraźnie określiłem rozmiar miejsca docelowego, zmieniając rozmiar:
$ 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
convertKomenda nie zawsze używać DPI jako jednostki domyślnego formatu gęstość / strona, więc możemy jednoznacznie określić DPI z -unitsopcji (w przeciwnym razie można uzyskać różne wyniki w różnych wersjach / kombinacje format wejściowy). Nowy rozmiar (określony przez -resize) to rozmiar strony DIN A4 w pikselach. Argument zmiany rozmiaru określa maksymalny rozmiar strony. Wybór rozdzielczości i jakości zależy dokładnie od przypadku użycia - wybrałem 150 DPI i średnią jakość, aby zaoszczędzić trochę miejsca, a nie wygląda tak źle po wydrukowaniu na papierze.
Należy pamiętać, że convertdomyślnie nie zmienia współczynnika proporcji podczas operacji zmiany rozmiaru:
Zmiana rozmiaru dopasuje obraz do żądanego rozmiaru. NIE wypełnia żądanego rozmiaru pudełka.
( Instrukcja ImageMagick )
W zależności od wersji ImageMagick i zaangażowanych formatów wejściowych może być pominięcie tej -repageopcji. Ale czasami jest to wymagane i bez tej opcji nagłówek PDF może zawierać zbyt małe wymiary. W każdym razie -repagenie powinno boleć.
Obliczenia wykorzystują arytmetykę liczb całkowitych, ponieważ bashtylko to obsługuje. Dzięki zshwyrażeniom można uprościć - tzn. Zastąpić je $((i*8.27))x$((i*11.69)).
Obrazy Lineart
Jeśli pliki PNG są obrazami dwupoziomowymi (czarno-biały aka lineart), to img2pdfnarzędzie daje lepsze wyniki niż ImageMagick convert. Oznacza to, że img2pdfjest szybszy i daje mniejsze pliki PDF.
Przykład:
$ img2pdf -o multipage.pdf a.png b.png
lub:
$ img2pdf --pagesize A4 -o multipage.pdf a.png b.png
-repage a4dostajęinvalid argument for option '-repage': a4