好的,我可以通过以下方式打印PDF文件:
pdf2ps file.pdf - | lp -s
但现在我想使用convert
来合并几个PDF文件,我可以使用以下命令:
convert file1.pdf file2.pdf merged.pdf
这个功能可以将file1.pdf和file2.pdf合并成merged.pdf,目标文件名可以用'-'替换。
问题
我该如何将convert命令的输出通过管道传递给pdf2ps,再传递给lp呢?
convert file1.pdf file2.pdf - | pdf2ps - - | lp -s
应该能够完成任务。
这个命令会将 convert 命令的输出发送到 pdf2ps,并将其输出发送到 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 ...
ps2write
设备,只有生成更大的PostScript Level 1的pswrite
。因此,如果需要,请相应地更改上述参数。-dNOPAUSE -dBATCH -sOutputFile=/dev/stdout
替换现代缩写-o -
。只有新版GS(2006年4月之后的所有版本)才知道-o
参数。lp
命令,您需要执行以下操作:gs -o - \
-sDEVICE=ps2write \
file1.pdf \
file2.pdf \
file3.pdf ... \
| lp -s <other-lp-options>
这可能比先运行pdftk
要快得多(但这也取决于您的输入文件)。
convert file1.pdf file2.pdf merged.pdf
pdf2ps merged.pdf - | lp -s
pdftk file1.pdf file2.pdf cat output - | pdf2ps - - | lp -s
(安装 pdftk 后) - alcoholconvert
还是pdf2ps
都在后台使用Ghostscript。因此,不要在同一个管道中运行两个不同的包装器来处理相同的Ghostscript,这样会使输入数据必须通过Ghostscript两次(如果它能够正常工作的话),您最好运行单个Ghostscript命令将多个PDF文件转换为一个PostScript文件或数据流... - Kurt Pfeifle