Linux管道(转换
好的,我可以打印一份PDF,
pdf2ps file.pdf - | lp -s
但现在我想用convert
来合并几个PDF文件,我可以这样做:
convert file1.pdf file2.pdf merged.pdf
它将file1.pdf和file2.pdf合并到merged.pdf中,target可以用' - '替换。
题
我怎么可以管道转换成pdf2ps
,然后再转换成lp
?
convert file1.pdf file2.pdf - | pdf2ps - - | lp -s
convert file1.pdf file2.pdf - | pdf2ps - - | lp -s
应该完成这项工作。
您将convert命令的输出发送到psf2ps,psf2ps将其输出反馈给lp。
你可以像文件一样使用/ dev / stdout:
convert file1.pdf file2.pdf /dev/stdout | ...
我使用gs合并PDF文件,如:
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=/dev/stdout -f ...
由于隐藏在您的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
快得多(但这也取决于您的输入文件)。