Ostatnim razem, gdy użyłem convert
takiego 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
convert
Komenda nie zawsze używać DPI jako jednostki domyślnego formatu gęstość / strona, więc możemy jednoznacznie określić DPI z -units
opcji (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 convert
domyś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 -repage
opcji. Ale czasami jest to wymagane i bez tej opcji nagłówek PDF może zawierać zbyt małe wymiary. W każdym razie -repage
nie powinno boleć.
Obliczenia wykorzystują arytmetykę liczb całkowitych, ponieważ bash
tylko to obsługuje. Dzięki zsh
wyraż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 img2pdf
narzędzie daje lepsze wyniki niż ImageMagick convert
. Oznacza to, że img2pdf
jest 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 a4
dostajęinvalid argument for option '-repage': a4