是否可以使用node.js打印图像?

时间:2014-05-02 22:21:01

标签: javascript node.js printing

好的,所以我试图从网页打印(典型的“打印”按钮,但我不希望出现打印对话框)所以我决定使用我已经存在的node.js后端来做任务(主要是因为没有打印对话框,几乎不可能从浏览器打印)。

我找到了节点打印机(https://github.com/tojocky/node-printer)模块,它运行良好,但只有文本。我试图发送RAW数据,但它的作用是打印原始字符。我真正需要的是打印一个徽标,以及一些转弯信息(这是针对客户服务机构)。

此外,必须在本地安装打印机,因此我无法使用IPP。

有没有办法用node.js打印图像,或图像和文本的组合?它可以通过节点打印机完成还是有另一种方式?

3 个答案:

答案 0 :(得分:7)

我结束了一个exe来为我做这项工作。我使用child_process调用printhtml,它为我完成所有打印工作。我的代码以这种方式结束:

var exec = require('child_process').exec;
exec('printhtml.exe file=file.html', function(err, data) {  
    console.log(data.toString());                       
}); 

答案 1 :(得分:3)

实际上,您可以使用node-printer打印图像。这项工作对我来说

var Printer = require('node-printer');
var fs = require('fs');

// Get available printers list 
var listPrinter = Printer.list();

// Create a new Pinter from available devices 
var printer = new Printer('YOUR PRINTER HERE. GET IT FROM listPrinter');

// Print from a buffer, file path or text 
var fileBuffer = fs.readFileSync('PATH TO YOUR IMAGE');
var jobFromBuffer = printer.printBuffer(fileBuffer);

// Listen events from job 
jobFromBuffer.once('sent', function() {
    jobFromBuffer.on('completed', function() {
        console.log('Job ' + jobFromBuffer.identifier + 'has been printed');
        jobFromBuffer.removeAllListeners();
    });
});

答案 2 :(得分:1)

我使用Node IPP包https://www.npmjs.com/package/ipp取得了成功。

文档上的示例代码(使用另一个节点模块PDFKIT将您的html /文件转换为PDF)不起作用。请参阅我的答案:Cannot print with node js ipp module了解一个有效的例子。