Linux管道(转换 - > pdf2ps - > lp)

时间:2010-03-24 12:33:54

标签: linux bash printing

好的,所以我可以打印PDF:

pdf2ps file.pdf - | lp -s

但现在我想使用convert合并多个PDF文件,我可以这样做:

convert file1.pdf file2.pdf merged.pdf

file1.pdf file2.pdf 合并到 merged.pdf 中,目标可以替换为“ - ”。

问题

我怎么能管道转换为pdf2ps然后转换为lp

4 个答案:

答案 0 :(得分:6)

convert file1.pdf file2.pdf - | pdf2ps - - | lp -s 应该做的。

您将convert命令的输出发送到psf2ps,然后psf2ps将其输出提供给lp。

答案 1 :(得分:0)

您可以像文件一样使用/ dev / stdout:

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

我使用gs合并pdfs,如:

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

答案 2 :(得分:0)

由于隐藏在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 Level 1)。因此,如果需要,请相应地更改上述参数。

较旧的Ghostscript版本可能还需要用更详细的-o -替换-dNOPAUSE -dBATCH -sOutputFile=/dev/stdout的现代缩写。只有较新的GS版本(所有版本都在2006年4月之后)才知道-o参数。

现在,要将PostScript输出直接传递给lp命令,您必须这样做:

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

这可能比首先运行pdftk快得多(但这也取决于您的输入文件)。

答案 3 :(得分:-1)

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