Как засунуть имиджмеджиком растровые картинки в PDF нужного размера

Для несложных преобразований картинок: изменение размера, увеличение резкости, добавление надписей и преобразование типов — большой и тяжёлый графический редактор не нужен — достаточно взять ImageMagick. ImageMagick знает не только кучу разных растровых форматов файлов, но и кое-какие векторные, в том числе PDF, однако преобразование в них требует иногда плясок с бубном: например, если для преобразования толпы PNG-файлов написать

convert *png result.pdf

то результат может и не понравиться. Путём экспериментов с найденным на всяких форумах кодом получился такой рецепт для преобразования в PDF размером 210×297 мм (A4) кучи растровых файлов, отсканированных с разрешением 600 точек на дюйм

convert *png -units pixelsperinch -density 600 -resize 100% \
 -gravity center -background white -extent 4960x7016 result.pdf

размер растровых файлов не меняется, они располагаются в центре получившихся страниц.

PDF-файл с разным заполнением страниц

Для картинок с разрешением 300 dpi цифры будут чуть другими:

convert *png -units pixelsperinch -density 300 -resize 100% \
-gravity center -background white -extent 2480x3508 result.pdf

Для 150 dpi числа надо ещё вдвое уменьшить:

convert *png -units pixelsperinch -density 150 -resize 100% \
-gravity center -background white -extent 1240x1754 result.pdf

UPDATE/22.01.2026: можно сделать один скрипт, который будет вычислять размер листа, исходя из требуемого разрешения

#!/usr/bin/env bash

set -e

if [ "$#" -lt 2 ]; then
  echo "Usage: $0 <dpi> <png files...>"
  exit 1
fi

DPI="$1"
shift

# размеры A4 в мм
A4_W_MM=210
A4_H_MM=297

# вычисление размеров в пикселях (округление до целого)
A4_W_PX=$(printf "%.0f" "$(echo "$A4_W_MM * $DPI / 25.4" | bc -l)")
A4_H_PX=$(printf "%.0f" "$(echo "$A4_H_MM * $DPI / 25.4" | bc -l)")

convert "$@" \
  -units pixelsperinch -density "$DPI" -resize 100% \
  -gravity center -background white \
  -extent "${A4_W_PX}x${A4_H_PX}" \
  `date +%Y%m%d-%H%M%S.pdf`

Как засунуть имиджмеджиком растровые картинки в PDF нужного размера: 2 комментария