Linux piping (конвертировать -> 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
хоть?
4 ответа
convert file1.pdf file2.pdf - | pdf2ps - - | lp -s
должен сделать работу.
Вы отправляете выходные данные команды convert в psf2ps, которая, в свою очередь, передает свои выходные данные в lp.
Так как спрятан за вашим pdf2ps
команда, в которой запущена команда Ghostscript (которая выполняет преобразование PDF -> PS), вы также можете запустить Ghostscript напрямую для генерации PostScript:
gs -o output.ps \
-sDEVICE=ps2write \
file1.pdf \
file2.pdf \
file3.pdf ...
Обратите внимание, что старые версии GS не включали ps2write
устройство (которое генерирует PostScript Level 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
сначала (но это также зависит от ваших входных файлов).
Вы можете использовать /dev/stdout как файл:
convert file1.pdf file2.pdf /dev/stdout | ...
Я использую GS для объединения PDF-файлов, как:
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=/dev/stdout -f ...
convert file1.pdf file2.pdf merged.pdf
pdf2ps merged.pdf - | lp -s