tojocky / node-printer

Native node.js printer
1.5k stars 436 forks source link

dom print form window #192

Open bqrfvatj opened 6 years ago

bqrfvatj commented 6 years ago

hi ! my os is windows, how to use 'node-printer' in html ?

printer.printDirect({data: dom.getElementById('printpage') , printer: 'NPI145676 (HP LaserJet M1536dnf MFP) (副本 1)' , type: "dom" , success:function(){ console.log("ok"); } , error:function(err){console.log(err);} });

xioxin commented 6 years ago

dom 无法直接打印 一般使用Electron 将网页转换为pdf 再打印 但是windows并不支持打印pdf 需要再转换 但是这一步现在没有人完成它 所以这个项目并不能在windows下打印网页

xioxin commented 6 years ago

不过有一些曲线救国方案 需要安装PostScript版本驱动 然后将pdf转换为PostScript 再RAW打印 如果你懂c语言的话 你可以尝试完善这个项目 如果不懂的话 我推荐你不要在这里浪费时间了

bqrfvatj commented 6 years ago

@xioxin 谢谢你的建议! 我原本的需求是在网页中指定本地的某一打印机进行静默打印,最后需要用node -webkit 将网页打包成桌面APP,看到这个才去尝试学了一下nodejs,不知道方向错了没有,或者有别的什么途径可以解决我的问题吗?

xioxin commented 6 years ago

暂时 nodejs 想实现静默打印网页还没有好的解决方案

so2bin commented 6 years ago

@xioxin 你好,我在electron中想调用打印机把图片打印出来,但我现在测试直接在nodejs中调用print_raw.js这个例子测试打印文本,结果打印机没有响应,这是什么原因?

let data = "N\nS4\nD15\nq400\nR\nB20,10,0,1,2,30,173,B,barcode\nP0\n";
printer.printDirect({
    data:data, printer: printerName, type: "RAW",
    success:function(){console.log("printed: success")}, 
    error:function(err){console.error(err);}
})

调用后返回的是:

printed: success

但去没有执行打印,求助,谢谢

xioxin commented 6 years ago

@so2bin 在windows下RAW会被发送给windows的打印管理来处理 但是并不支持代码。在mac下可以使用 代码会被直接发给打印机

keyiis commented 6 years ago

@bqrfvatj 有一个途径,将dom转换成图片,任何打印机都支持图片,如果是针式或热敏的可以转换成光栅图用指令的形式发送给打印机