我需要打印一个PDF文件,我有两个选择:
- 从 NodeJS 应用程序打印
- 从命令行执行。
从节点我尝试了"打印机","节点本机打印机","节点打印机"库,但是当我尝试打印PDF时,我得到了很多页面,每页都打印了文件的源代码。 从命令行我尝试了 lp/lpr,在这种情况下,我得到了相同的结果,很多带有源代码的页面(就好像我用文本编辑器打开 PDF 并打印您可以在那里看到的内容一样)。 我还尝试制作一个这样的.txt文件:
AAAAAAAAAAAA
qwerty
zxcvbnm
但 LP/LPR 只打印第一行AAAAAAAAAAAA
我也尝试过在窗口中,从命令行(PDFtoPrinter命令)正确打印PDF。
实际使用的打印机:"Xerox WorkCentre 3225",驱动程序同时安装在Windows和Linux上。
编辑 1
我的.pdf文件不仅仅是一个文本文件,它包含文本,条形码等,所以我无法转换为txt。
编辑 2
我找到了一个解决方案:
- pdf2ps 文件名.pdf filename.ps
- LPR filename.ps
这有效,但我想知道是否有直接打印它的解决方案。
如果您有或可以安装enscript
,您可以尝试:
enscript file.txt -o - | ps2pdf - text.pdf | lp -d <PRINTERNAME>
您可能还需要安装ghostscript
因为我认为ps2pdf
是ghostscript
的一部分。
我只是将转换为PDF部分,因为您给出了一个带有文本文件的示例,并且还提到了一个打印有代码的页面,因此txt和pdf之间可能有一个转换步骤,该步骤输出了格式不正确的内容。
要知道打印机名称,可以运行lpstat -p -d
。它将显示可用打印机的列表。
编辑:
好的,我看到了您的编辑,在这种情况下,您仍然可以编写一个 shell 函数来一次性完成所有这些操作。它不能完全回答你的问题,但它同样是显而易见的。
在您的.bashrc
或同等学历中:
function pdfprint() {
pdf2ps "$1" | lpr
}
并以这种方式使用它:
pdfprint filename.pdf