Востаннє, коли я використовував convert
таке завдання, я чітко вказав розмір пункту призначення шляхом зміни розміру:
$ 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
Команда не завжди використовує DPI в якості одиниці формату щільності по замовчуванням / сторінки, таким чином , ми явно вказати DPI з -units
опцією ( в іншому випадку ви можете отримати різні результати з різними версіями комбінацій / формату вхідного сигналу). Новий розмір (вказаний через -resize
) - це розмір сторінки DIN A4 у пікселях. Аргумент зміни розміру визначає максимальний розмір сторінки. Яку роздільну здатність та якість вибрати саме залежно від випадку використання - я вибрав 150 DPI та середню якість, щоб заощадити місце, хоча він не надто погано виглядає при друкуванні на папері.
Зауважте, що convert
за замовчуванням не змінюється співвідношення сторін під час операції зміни розміру:
Змінити розмір буде відповідати зображенню до потрібного розміру. Він НЕ заповнює, потрібний розмір поля.
( Посібник із ImageMagick )
Залежно від версії ImageMagick і відповідних форматів введення, можливо, буде пропустити цю -repage
опцію. Але іноді це потрібно і без цієї опції заголовок PDF може містити занадто малі розміри. У будь-якому випадку, -repage
не слід шкодити.
Для обчислень використовується ціла арифметика, оскільки це bash
лише підтримує. За zsh
допомогою виразів можна спростити - тобто замінити на $((i*8.27))x$((i*11.69))
.
Lineart Зображення
Якщо файли PNG мають дворівневі (чорно-білі ака-lineart) зображення, то img2pdf
інструмент дає чудові результати порівняно з ImageMagick convert
. Це означає, що img2pdf
це швидше і отримує менші PDF-файли.
Приклад:
$ img2pdf -o multipage.pdf a.png b.png
або:
$ img2pdf --pagesize A4 -o multipage.pdf a.png b.png
-repage a4
я отримуюinvalid argument for option '-repage': a4