首页 > 解决方案 > 如何从命令行或 npm 库打印 PDF 文件?

问题描述

我需要打印一个 PDF 文件,我有两个选择:

  • 从 nodejs 应用程序打印
  • 从命令行执行。

从节点我尝试过“打印机”、“节点本机打印机”、“节点打印机”库,但是当我尝试打印我的 PDF 时,我得到了很多页面,每个页面都打印了文件的源代码。从命令行我尝试了 lp/lpr 并且在这种情况下我得到了相同的结果,很多页面都有源代码(就像我用文本编辑器打开 PDF 并打印你在那里看到的一样)。我还尝试制作一个 . txt 文件如下:

AAAAAAAAAAAA
qwerty
zxcvbnm

但 lp/lpr 只打印第一行AAAAAAAAAAAA

我也在 Windows 中尝试过,从命令行(PDFtoPrinter 命令)正确打印 PDF。

实际使用的打印机:“Xerox WorkCentre 3225”,在 windows 和 linux 上都安装了驱动程序。

编辑 1

我的 .pdf 文件不仅仅是一个文本文件,它包含文本、条形码等,所以我无法转换为 txt。

编辑 2

我找到了一个解决方案:

  • pdf2ps 文件名.pdf 文件名.ps
  • lpr 文件名.ps

这可行,但我想知道是否有直接打印它的解决方案。

标签: node.jslinuxubuntupdfcommand-line

解决方案


如果您有或可以安装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

推荐阅读