2010-03-24 28 views
4

好了,我可以打印PDF做:Linux的管道(转换 - > pdf2ps - > LP)

pdf2ps file.pdf - | lp -s 

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

convert file1.pdf file2.pdf merged.pdf 

其合并file1.pdffile2.pdfmerged.pdf,目标可以替换为 ' - '。

问题

我管怎么能转换成pdf2ps然后进入lp关系吗?

回答

6

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

您将convert命令的输出发送到psf2ps,psf2ps将其输出反馈给lp。

+0

确实有效。但是,我只是发现转换不正确合并我的PDF文件。哎呀。内容是空的。所以,发布我的下一个问题,我猜:> – alcohol 2010-03-24 12:49:57

+1

最终解决方案: 'pdftk file1.pdf file2.pdf cat输出 - pdf2ps - - | lp -s'(安装完pdftk后) – alcohol 2010-03-24 13:10:03

+0

@tonio:你似乎并不知道'convert'和'pdf2ps'都在后台使用Ghostscript。因此,不要在管道中围绕同一个Ghostscript运行两个不同的包装器,这会使输入数据必须经过两次Ghostscript(如果它可以运行***全部***),则最好运行一个Ghostscript命令将多个PDF文件转换为一个PostScript文件或数据流.... – 2016-03-30 13:38:16

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

您可以使用/ dev /标准输出,就像一个文件:

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

我用GS用于合并PDF文件,如:

gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=/dev/stdout -f ... 
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版本可能还需要用更详细的-dNOPAUSE -dBATCH -sOutputFile=/dev/stdout来替换-o -的现代缩写。只有更新的GS版本(全部在2006年4月以后)了解-o参数。

现在,直接管PostScript输出到lp命令,你就必须做到这一点:

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

这可能是比跑步pdftk第一相当快(但是这也取决于你的输入文件) 。