В прошлый раз, когда я использовал 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 в пикселях. Аргумент resize указывает максимальный размер страницы. Какое разрешение и качество выбрать точно, зависит от варианта использования - я выбрал 150 DPI и среднее качество, чтобы сэкономить место, хотя при печати на бумаге он выглядит не так уж плохо.
Обратите внимание, что convert
по умолчанию не изменяется соотношение сторон с помощью операции изменения размера:
Изменение размера подгонит изображение под требуемый размер. НЕ заполняет, запрошенный размер коробки.
( Руководство по ImageMagick )
В зависимости от версии ImageMagick и задействованных форматов ввода, возможно, можно пропустить этот -repage
параметр. Но иногда это требуется, и без этой опции заголовок PDF может содержать слишком маленькие размеры. В любом случае, -repage
не должно быть больно.
В вычислениях используется целочисленная арифметика, поскольку это bash
поддерживается только. С zsh
помощью выражений можно упростить - т.е. заменить на $((i*8.27))x$((i*11.69))
.
Lineart Images
Если файлы PNG представляют собой двухуровневые (черно-белые или линейные) изображения, тогда 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