做通知单打印,诀窍是用尺子量通知单;
《飞天云打印》采用的输入单位是毫米,可以带一位小数,如18.5毫米。
用尺子将文字或图片标签的放置位置的左边距、上边距、长度、宽度量出来,拼接出打印格式数据,
然后将拼接出打印格式数据通过WebSocket发送给《飞天云打印》就行了。
《飞天云打印》在打印后,会返回打印结果,发送端可以根据打印结果判断打印情况。
需要注意的是,打印票据单据的服务名为:PrintReceipt,打印小票的服务名为:PrintTicket,不要搞错了。
以下是代码:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>票据打印</title>
<script type="text/javascript">
function GetPrintString()
{
//注意:“|”是分隔符;“&”是段落换行符;“`”是结束符(符号是键盘数字键1和TAB键夹角的按键字符)
//注意,打印内容中不能出现以上3种符号。
//设置纸张参数:FtPrintPaper|打印别名|Custom|纸张宽度|纸张高度|纸张方向(1纵向,2横向)
//必须为第一行
//添加一个矩形元件,参数依次为:左边距(单位毫米),上边距(单位毫米),矩形宽度(单位毫米),矩形高度(单位毫米),内填充颜色,边框宽度,边框颜色
//Rectangle|20|10|170|3|FF0000|1|000000
//添加一个圆形元件,参数依次为:外接矩形左边距(单位毫米),外接矩形上边距(单位毫米),外接矩形宽度(单位毫米),外接矩形高度(单位毫米),内填充颜色,边框宽度,边框颜色
//Circle|20|20|20|20|33CC00|1|CC0000
//添加一个竖线元件,参数依次为:左边距(单位毫米),上边距(单位毫米),宽度(单位毫米),高度(单位毫米),竖线颜色
//VerticalLine|100|20|40|5|CC0000
//添加一个横线元件,参数依次为:左边距(单位毫米),上边距(单位毫米),宽度(单位毫米),高度(单位毫米),横线颜色
//HorizontalLine|105|190|28|5|CC0000
//添加一个打印元件,参数依次为:元件唯一标识,左边距(单位毫米),上边距(单位毫米),宽度(单位毫米),高度(单位毫米),字体名称,字体大小,字体眼色,字体背景颜色,字体样式,字体对齐方式
//字体样式:0默认,1加粗,2加斜,3加下划线,4加删除线
//字体对齐方式:0左对齐,1居中,2右对齐;注意:需要宽度为固定值
//固定元件宽度,即文字将可以自动换行
//Label|用户号|40|60|0|0|宋体|12|000000||0|0
//添加一个图片元件,参数依次为:左边距(单位毫米),上边距(单位毫米),图片宽度(单位毫米),图片高度(单位毫米),图片URL地址
//注意:如果"图片宽度"和"图片高度"任一为0|则元件将根据图片自动缩放大小
//注意:图片URL地址|不能含有分隔符“|”
//Image|1|1|0|0|http://www.cnft.cn/img/bd_logo1.png
//二维码参数:QRCode,二维码左边距(单位毫米),二维码上边距(单位毫米),二维码点大小(像素),二维码颜色,背景颜色,二维码内容
//QRCode|50|50|3|000000|FFFFFF|电子发票:|http://www.cnft.cn
var strPrintString="FtPrintPaper|aaa|Custom|211|110|1";
strPrintString+="&Rectangle|18|28|177|70|FFFFFF|1|000000";
strPrintString+="&VerticalLine|46|28|1|40.5|000000";
strPrintString+="&VerticalLine|46|88.5|1|9.5|000000";
strPrintString+="&VerticalLine|110|48.5|1|49.5|000000";
strPrintString+="&VerticalLine|138|28|1|70|000000";
strPrintString+="&VerticalLine|166|28|1|20.5|000000";
strPrintString+="&HorizontalLine|18|38|177|1|000000";
strPrintString+="&HorizontalLine|18|48|177|1|000000";
strPrintString+="&HorizontalLine|18|58|177|1|000000";
strPrintString+="&HorizontalLine|18|68|177|1|000000";
strPrintString+="&HorizontalLine|18|88|177|1|000000";
strPrintString+="&Label|75|13|0|0|宋体|16|000000||1|0|某某公司安装通知单";
strPrintString+="&Label|24|31|0|0|宋体|12|000000||0|0|安装地址";
strPrintString+="&Label|144|31|0|0|宋体|12|000000||0|0|安装户数";
strPrintString+="&Label|24|41|0|0|宋体|12|000000||0|0|安装类型";
strPrintString+="&Label|144|41|0|0|宋体|12|000000||0|0|缴款情况";
strPrintString+="&Label|24|51|0|0|宋体|12|000000||0|0|联系人";
strPrintString+="&Label|116|51|0|0|宋体|12|000000||0|0|联系电话";
strPrintString+="&Label|24|61|0|0|宋体|12|000000||0|0|施工队";
strPrintString+="&Label|116|61|0|0|宋体|12|000000||0|0|施工班组";
strPrintString+="&Label|24|71|0|0|宋体|12|000000||0|0|业务受理单位签字:";
strPrintString+="&Label|116|71|100|100|宋体|12|000000||0|0|备注";
strPrintString+="&Label|24|91|0|0|宋体|12|000000||0|0|经办人";
strPrintString+="&Label|116|91|0|0|宋体|12|000000||0|0|审核人";
strPrintString+="&Label|80|22|0|0|宋体|12|000000||0|0|填写日期:2019-12-12";
strPrintString+="&Label|150|22|0|0|宋体|12|000000||0|0|受理编号:00000888";
strPrintString+="&Label|50|31|0|0|宋体|12|000000||0|0|四川省成都市光华大道";
strPrintString+="&Label|170|31|0|0|宋体|12|000000||0|0|12户";
strPrintString+="&Label|50|41|0|0|宋体|12|000000||0|0|民用";
strPrintString+="&Label|170|41|0|0|宋体|12|000000||0|0|未缴款";
strPrintString+="&Label|50|51|0|0|宋体|12|000000||0|0|张三";
strPrintString+="&Label|143|51|0|0|宋体|12|000000||0|0|13888888888";
strPrintString+="&Label|50|61|0|0|宋体|12|000000||0|0|公司第一施工队";
strPrintString+="&Label|143|61|0|0|宋体|12|000000||0|0|公司班组";
strPrintString+="&Label|143|71|50|50|宋体|12|000000||0|0|我和我的祖国,一刻也不能分割;无论我走到哪里,都流出一首赞歌。";
strPrintString+="&Label|50|91|0|0|宋体|12|000000||0|0|张三";
strPrintString+="&Label|143|91|0|0|宋体|12|000000||0|0|李四";
strPrintString+="&Image|20|12|22|7|https://dss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/scholar_mid/static/protocol/https/xueshu/img/scholar_logo_e95073e.png";
strPrintString+="&QRCode|50|7|3|000000|FFFFFF|http://www.cnft.cn";
strPrintString+="`";//末尾以符号"`"结尾
return strPrintString;
}
function doFtPrint()
{
var strReturnCode = "-1";
if ("WebSocket" in window)
{
//window.alert("您的浏览器支持 WebSocket!");
//打开一个WebSocket
var ws=new WebSocket("ws://localhost:8877/PrintReceipt");
ws.onopen = function()
{
//WebSocket已连接.
var strPrintString=GetPrintString();
ws.send(strPrintString);
};
ws.onmessage = function(evt)
{
//WebSocket收到数据.
strReturnCode=evt.data;
ws.close();
if (strReturnCode=="1")
{
document.getElementById("txtReturnCode").value="返回码["+strReturnCode+"],打印成功!";
}
else
{
document.getElementById("txtReturnCode").value="返回码["+strReturnCode+"],打印失败。";
}
};
ws.onclose = function()
{
//WebSocket已关闭
};
ws.onerror = function()
{
if(ws.readyState==3)
{
window.alert("无法连接到FtPrint,请检查FtPrint是否运行!");
}
};
}
else
{
//浏览器不支持WebSocket
window.alert("您的浏览器不支持 WebSocket!");
}
}
</script>
</head>
<body>
<input type="text" id="txtReturnCode" value="" />
<a href="javascript:doFtPrint()">立即打印</a>
</body>
</html>