项目中需要打印二维码,二维码已经用QRCode生成,直接生成图片。本想这把图片显示在页面上 再调用本地打印程序,走条码打印机就ok了。结果遇到问题,打印机纸张大小和页面需要打印的大小匹配不上。不是打印空白,就是打出来两张纸图片内容在两张纸中间。经过高手点拨,随后放弃此方法,改用Excle打印。
主要思路:提前写好Excel模板,在模板中设置好打印需要的页面纸张等…… 点击图片走JS 调用excel ,把图片和要打印的内容传过去,调excel打印,关闭excel。神不知鬼不觉。搞定。
具体实现:
1、在设备和打印机中设置好打印纸张大小。
2、创建excle模板,在模板中也需要调好打印机中设置的页面属性,需要一致。
设置完页面属性后可以打印预览 ,关闭后excel即可出现虚线边框,即设置条码纸张大小。便于调页面。
3、JS 调用excel 打印
onClick="PrintTableToExcel('${supFileMain.barCodeName }','${supFileMain.fileTitle}')"//传了两个参数分别是图片的路径,和文章内容
<pre class="javascript" name="code">function PrintTableToExcel(image,title)
{
var temp = Array();
try
{
var xls = new ActiveXObject( "Excel.Application" );
}
catch(e)
{
alert( "要打印该表,您必须安装Excel电子表格软件,同时浏览器须使用“ActiveX 控件”,您的浏览器须允许执行控件。 请点击【帮助】了解浏览器设置方法!");
return false;
}
xls.visible = false;//excel不可见
//xls.visible = true;
//要指定EXCEL的摸板。需要自己建立
xls.Workbooks.Open("http://127.0.0.1:8080/swsupf/jsp/common/sign/muban.xls");
//打开工作区
var xlBook = xls.Workbooks(1);
var xlsheet = xlBook.Worksheets(1);
//向工作区中填写数据
//xlsheet.Pictures.Insert("http://127.0.0.1:8080/swsupf" + image);
xlsheet.Shapes.AddShape(1, 0, 0, 54, 54).Fill.UserPicture("http://127.0.0.1:8080/swsupf" + image);
//alert(title);
xlsheet.Cells(1 , 3).Value = title ;
//直接打印
xlsheet.PrintOut();
//excel退出
xlBook.Close(0);//0为不保存,1为保存
}
调用过程中IE可能会提示,这里需要把网站设置成安全信任站点,还有ActiveX控件和插件下面的都设置为启用,不出错,打印机即可打印条码。