【发布时间】:2016-05-06 01:16:47
【问题描述】:
我正在尝试通过网页使用 Epson TM-T20II(热敏打印机)。我已经完成了必要的配置,并且打印机使用给定的软件在我的网络上工作正常。所以我下载了 JS epos print SDK,并尝试运行这个示例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>TITLE</title>
<script type="text/javascript" src="../ePOS-Print_SDK/ePOS-Print_SDK_150729E/JavaScript/epos-print-5.0.0.js"></script>
<script type="text/javascript">
function buildMessage() {
//Create an ePOS-Print Builder object
var builder = new epson.ePOSBuilder();
//Create a print document
builder.addTextLang('en')
builder.addTextSmooth(true);
builder.addTextFont(builder.FONT_A);
builder.addTextSize(3, 3);
builder.addText('Hello,\tWorld!\n');
builder.addCut(builder.CUT_FEED);
//Acquire the print document
var request = builder.toString();
var address = 'http://192.168.1.65/cgi-bin/epos/service.cgi?devid=99&timeout=1000';
//Create an ePOS-Print object
var epos = new epson.ePOSPrint(address);
epos.onreceive = function (res) {
//When the printing is not successful, display a message
if (!res.success) {
alert('A print error occurred');
}
}
//Send the print document
epos.send(request);
}
</script>
</head>
<body>
<button onclick='buildMessage()'>Run</button>
</body>
</html>
对于 devid 参数,我尝试了“local_printer”,它是设备的名称, 然后我在配置面板中看到打印机 id 是 99。但还是不行,我在 cgi 请求上得到了 405 Method not allowed 状态码。
任何提示?提前致谢。
编辑:
因此,经过一些研究,问题似乎来自 CORS 请求。该请求是出于安全问题的预检,并且此预检请求未通过访问控制,因为响应中缺少“Access-Control-Allow-Origin”标头。那么如何设置这个标题呢?
【问题讨论】:
-
您找到解决方案了吗?我也有 405 响应。我查看了 epson 制作的 javascript 库。似乎他们尝试通过套接字连接,但连接不成功。我还尝试了 epson 制作的 iOS 库,它工作正常(它也是一个套接字连接)
-
最后我用python编写了一个程序,使用了一个为所有类型的网络热敏打印机制作的开源库,并在我的JS脚本中调用它,这是我发现让它工作的唯一方法,它像魅力一样工作。
-
好的,谢谢您的回答!我用开源库对 nodeJs 做了同样的“技巧”:)
-
@LongDuZboub 你最终使用的库是什么?
-
@CountMurphy python-escpos,这是一个链接escpos
标签: javascript printing thermal-printer