2

我正在尝试使用打印机在本地打印 pdf 文件。这是一个代码,试图打印。

fs.readFile('documents/AccountStatement.pdf', function(err, data) { 
    if (err)
        throw err;
    var printer = ipp.Printer("http://hostname:631/ipp/printer");
    var msg = {
    "operation-attributes-tag": {
      "requesting-user-name": "KUMA1936",
      "job-name": "My Test Job",
      "document-format": "application/pdf"
    },
    data: data
    };
    printer.execute("Print-Job", msg, function(err, res){
        console.log(res);
        console.log(err);
    });
});

在上面的代码中,printer.execute() 方法和“Print-Job”参数是什么。这里的 631 是什么。当我打印 res 时,它会显示

{版本:'1.1',状态代码:'服务器错误操作-不支持',id:442076,'操作属性标签':{'属性字符集':'utf-8','属性-自然-language': 'en-us' } } 错误为空。

4

3 回答 3

1

您可以查看 API文档。第一个参数(字符串)是 IPP 定义的操作。关于Print-Job操作的描述在这里给出

3.2.1 Print-Job Operation

   This REQUIRED operation allows a client to submit a print job with
   only one document and supply the document data (rather than just a
   reference to the data).  See Section 15 for the suggested steps for
   processing create operations and their Operation and Job Template
   attributes.

您可以在此处查看其他 IPP 支持的操作。631 是用于 IPP 的接受端口,它使用 TCP。

您可以在此处查看有关该错误的更多信息,其中显示:

13.1.5.2 server-error-operation-not-supported (0x0501)

   The IPP object does not support the functionality required to fulfill
   the request. This is the appropriate response when the IPP object
   does not recognize an operation or is not capable of supporting it.
   See sections 3.1.6.1 and 3.1.7.

这意味着您的代码中没有错误。很可能您的打印机未配置或不支持 IPP。最后但并非最不重要的IPP.Printer一点是,必须给打印机 IP。因此,请检查您提供的 IP 是否有效(您的代码显示您提供了主机名)。从项目页面给出:

To find out if your printer supports IPP:

 - Google your printer's specs
 - Try: telnet YOUR_PRINTER 631. If it connects, that's a good sign.
 - Use the '/examples/findPrinters.js' script.
于 2013-04-24T15:44:11.827 回答
0
  • 看起来您在发送 IPP-2.0 时收到了 IPP-Version-1.1-Response。
  • 尝试使用 version-option 降级到 1.1
于 2015-01-28T23:51:16.763 回答
0

就我而言,我只是共享打印机:(就像与他人共享)

所以 URL 会是 (你会被 findPrinters.js 找到)

http://My-Computer-Name.local.:631/printers/my_printer_name

如果您的打印机没有与您的计算机连接(如 USB),这应该会有所帮助。但是通过局域网连接。

于 2014-09-09T12:46:37.697 回答