Автор Тема: Печать брошюры из PDF со смешанными портретными и альбомными листами  (Прочитано 1395 раз)

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 240
    • Email
Понадобилось распечатать брошюру из файла PDF с разноориентированными листами.
Как оказалось, evince/atril, adobe reader этого не могут. Портят готовые страницы оборачивая их своими не настраиваемыми и не отключаемыми полями, да и с ориентацией неадекватно работают.
Страницы в PDF можно предварительно повернуть в pdfedit, pdfmod, pdftk. Однако, pdfedit портит повёрнутый русский текст; pdfmod портит таблицу xref в выходном файле, кроме того вот совсем не хочется, чтобы в системе исполнялись ехе-файлы; pdftk — вроде нормально делает, но это всё-таки лишняя сущность.
Помог ghostscript.

Пример для печати портретных страниц формата а6 на альбомные листы а5:

Следующая команда сориентирует в указанное положение все страницы, если они ещё и разного размера, то смасштабирует и отцентрирует:
gs -q -dNOPAUSE -dBATH -P- -dSAFER -sDEVICE=pdfwrite -sOutputFile=oriented.pdf -dDEVICEWIDTHPOINTS=297 -dDEVICEHEIGHTPOINTS=420 -dFitPage -dFIXEDMEDIA -dAutoRotatePages=/None -dCompatibilityLevel=1.4 -f infile.pdf -c quit
где 297 и 420 пункты (1/72 дюйма), для стандартных форматов можно посмотреть в документации ghostscript (файл Use.htm), для нестандартных — рассчитать из сантиметров/миллиметров. Если требуется можно указать ширину больше чем высоту, тогда страницы будут повёрнуты в альбомную ориентацию.

Далее, полученный файл oriented.pdf пропускаем через конвейер:
pdf2ps -dLanguageLevel=3 oriented.pdf - | psbook | psnup -pa5 -W10.5cm -H14.8cm -l -2 | ps2pdf -sPAPERSIZE=a5 -dAutoRotatePages=/None -dCompatibilityLevel=1.4 - booklet.pdf
тут:
   -pa5 размер выходных листов (вместо этого можно указать как -w14.8cm -h21.0cm).
   -W10.5cm -H14.8cm размер входных листов (psnup не знает формат а6 и не понимает размеры в пунктах).
Вместо -sPAPERSIZE=a5 (при нестандартных размерах листа можно указать -dDEVICEWIDTHPOINTS=пунктов -dDEVICEHEIGHTPOINTS=пунктов).

Полученный файл booklet.pdf можно печатать уже с помощью тех же evince/atril, adobe reader, отключив масштабирование, поворот, центрирование.

Для работы требуются пакеты ghostscript-common, ghostscript-utils, psutils.

Файлы с примерами во вложениях. Может кому пригодится.
« Последнее редактирование: 18.11.2019 19:11:29 от stranger573 »