Terakhir kali saya menggunakan converttugas seperti itu, saya secara eksplisit menentukan ukuran tujuan melalui pengubahan ukuran:
$ 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
The convertperintah tidak selalu menggunakan DPI sebagai satu unit Format density default / halaman, sehingga kita secara eksplisit menentukan DPI dengan -unitspilihan (jika tidak, anda mungkin mendapatkan hasil yang berbeda dengan versi yang berbeda / kombinasi format masukan). Ukuran baru (ditentukan melalui -resize) adalah dimensi halaman DIN A4 dalam piksel. Argumen pengubahan ukuran menentukan ukuran halaman maksimal. Resolusi dan kualitas apa yang harus diambil tergantung pada use case - Saya memilih 150 DPI dan kualitas rata-rata untuk menghemat ruang sementara tidak terlihat terlalu buruk ketika dicetak di atas kertas.
Perhatikan bahwa convertsecara default tidak mengubah rasio aspek dengan operasi pengubahan ukuran:
Ubah ukuran akan menyesuaikan gambar ke ukuran yang diminta. Itu TIDAK mengisi, ukuran kotak yang diminta.
( Manual ImageMagick )
Bergantung pada versi ImageMagick dan format input yang terlibat mungkin ok untuk menghilangkan -repageopsi. Tetapi kadang-kadang diperlukan dan tanpa opsi itu header PDF mungkin mengandung dimensi terlalu kecil. Bagaimanapun, yang -repageseharusnya tidak sakit.
Perhitungan menggunakan bilangan bulat aritmatika karena bashhanya mendukungnya. Dengan zshekspresi dapat disederhanakan - yaitu diganti dengan $((i*8.27))x$((i*11.69)).
Gambar Lineart
Jika file PNG adalah gambar bi-level (hitam & putih alias lineart) maka img2pdfalat menghasilkan hasil yang unggul di atas ImageMagick convert. Itu berarti img2pdflebih cepat dan menghasilkan PDF yang lebih kecil.
Contoh:
$ img2pdf -o multipage.pdf a.png b.png
atau:
$ img2pdf --pagesize A4 -o multipage.pdf a.png b.png
-repage a4saya mendapatkaninvalid argument for option '-repage': a4