Terakhir kali saya menggunakan convert
tugas 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 convert
perintah tidak selalu menggunakan DPI sebagai satu unit Format density default / halaman, sehingga kita secara eksplisit menentukan DPI dengan -units
pilihan (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 convert
secara 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 -repage
opsi. Tetapi kadang-kadang diperlukan dan tanpa opsi itu header PDF mungkin mengandung dimensi terlalu kecil. Bagaimanapun, yang -repage
seharusnya tidak sakit.
Perhitungan menggunakan bilangan bulat aritmatika karena bash
hanya mendukungnya. Dengan zsh
ekspresi 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 img2pdf
alat menghasilkan hasil yang unggul di atas ImageMagick convert
. Itu berarti img2pdf
lebih 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 a4
saya mendapatkaninvalid argument for option '-repage': a4