在日常开发中,经常会遇到web打印的需求,很多时候,需要静默打印,然而浏览器一般不支持无预览打印,这时就需要借助一些打印控件来实现这个需求了。本文将介绍RTPrinter web打印控件的用法。
一、下载安装
使用RTPrinter前,需要在页面中引入一个js文件,可从下面的链接引入,
http://cdn.dadang.cn/rtp.js ,也可以将js下载到本地引入。
引入js后,通过调用getRTP()方法可以获取到一个打印实例,调用实例的check()方法可以检测是否下载安装了控件,如果没有安装,会自动下载安装包gzprinter.zip,解压后,运行setup.exe安装即可。
getRTP().check();
二、打印模板结构
RTPrinter支持直接打印html模板,模板结构如下:
<div class="rtp-template">
<div class="rtp-header">这里是头部要打印的内容</div>
<div class="rtp-item">
<table>
<thead>
</thead>
<tbody>
</tbody>
</table>
</div>
<div class="rtp-footer">
这里是尾部要打印的内容
</div>
</div>
头部和尾部一般用于放置表头和表尾内容,可以是任意结构的html。
rtp-item中放置要打印的表格,当表格内容超长时,会自动分页打印,分页时可选是否每页中都包含列名行。
模板中的三部分都是可选的,可以根据需要取舍。如果要打印的内容可能超过一页时,建议将这部分放置到rtp-item中,并以表格的形式呈现,因为这样能自动分页打印。
三、配置参数
var defaults = {
rtp_header: ".rtp-header", //模板头选择器
rtp_footer: ".rtp-footer", //模板尾选择器
rtp_item: '.rtp-item', //模板表格选择器
font: {
name:'Verdana, Geneva, sans-serif', //打印使用的字体
size: '12pt' //打印字体大小
},
printer: {
name: '', //可指定打印机名称,不指定则使用默认值
paperName:'', //可指定纸张名称,不指定则使用默认值
pageWidth: 210, //纸张宽度,单位mm
pageHeight: 297, //纸张高度,单位mm
dpi:96, //打印机分辨率
landscape: false, //是否横向,true:横向 false:纵向
copies:1 //打印份数
},
margins: {
top: 40, //打印上边距,单位px
bottom: 40, //打印下边距,单位px
left: 40, //打印左边距,单位px
right:40 //打印右边距,单位px
},
usePager:true, //是否在页尾显示页码
pagerNumStyle: "第#p页/共#P页", //页码显示样式
preview: false, //是否预览打印,true:预览 false:不预览直接打印
appendTheadPerPage: true, //自动分页时是否每页都带上列名
downloadUrl:'http://shop.wanyouyinli.com/download/rtprinter.zip', //控件下载地址
token:'' //授权码,无授权码可免费试用30天
};
这些参数可以在getRTP(options)时指定,也可以通过getRTP().settings.xx修改。
四、支持的方法
4.1 获取打印实例
getRTP(options)
options:参考配置参数进行传递
4.2 打印
print(template,callback)
template:要打印的模板css选择器,例如:#template。该模板中的内容会被发送到打印机打印。
callback:打印回调函数。
4.3 获取打印机列表
getPrinterList(callback)
callback:获取到打印机列表后的回调函数,参数包含了打印机列表。
4.4获取纸张
getPapers(printerName, callback)
printerName:打印机名称
callback:回调函数,参数包含了指定打印机支持的纸张列表
4.5获取打印机分辨率
getPrinterDpi(printerName, callback)
printerName:打印机名称
callback:回调函数,参数包含了指定打印机的分辨率
4.6检测打印控件是否安装
check()
五、总结
根据配置参数和方法,可以很容易打印页面中指定的html模板,支持指定打印机、指定纸张、指定打印方向、指定打印份数、自动分页。