Linux piping (convert → pdf2ps → lp)

Хорошо, поэтому я могу распечатать PDF файл:

pdf2ps file.pdf - | lp -s

Но теперь я хочу использовать convert для объединения нескольких файлов PDF, я могу сделать это с помощью

convert file1.pdf file2.pdf merged.pdf

который объединяет файлы file1.pdf и file2.pdf в merged.pdf, цель может быть заменена на "-".

Вопрос

Как я мог бы преобразовать текст в pdf2ps, а затем в lp, хотя?

Ответ 1

convert file1.pdf file2.pdf - | pdf2ps - - | lp -s должен выполнять эту работу.

Вы отправляете вывод команды convert в psf2ps, который, в свою очередь, подает свой вывод на lp.

Ответ 2

Вы можете использовать /dev/stdout как файл:

convert file1.pdf file2.pdf /dev/stdout | ...

Я использую gs для слияния PDF файлов, например:

gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=/dev/stdout -f ...

Ответ 3

Спрятанный за вашей командой pdf2ps выполняется команда Ghostscript (которая выполняет преобразование PDF → PS), вы также можете запустить Ghostscript непосредственно для генерации PostScript:

gs -o output.ps      \
   -sDEVICE=ps2write \
    file1.pdf        \
    file2.pdf        \
    file3.pdf ...

Обратите внимание, что более старые версии GS не включают устройство ps2write (которое генерирует уровень PostScript 2), но только pswrite (который генерирует гораздо более высокий уровень PostScript 1). Поэтому при необходимости измените указанный выше параметр.

Предыдущие версии Ghostscript также могут заменить современную аббревиатуру -o - более подробным -dNOPAUSE -dBATCH -sOutputFile=/dev/stdout. Только новые версии GS (все после апреля 2006 года) знают о параметре -o.

Теперь, чтобы напрямую подключить вывод PostScript к команде lp, вам нужно будет сделать это:

gs -o -              \
   -sDEVICE=ps2write \
    file1.pdf        \
    file2.pdf        \
    file3.pdf ...    \
| lp -s <other-lp-options>

Это может быть значительно быстрее, чем запуск pdftk сначала (но это также зависит от ваших входных файлов).

Ответ 4

convert file1.pdf file2.pdf merged.pdf
pdf2ps merged.pdf - | lp -s