本文档是打印二期的改造版说明,第一部分是打印二期的设计简单描述。请仔细阅读修改点,以及各接口的描述和参数说明
打印2期主要是实现一套通用的方案,设计的根本是打印一个html文档,被打印的被容isv可以做成可编辑的html模板,提供给用户调整内容的可能,这样打印结果就是可随用户任意调整
需要强调的是:
translatePreviewDataWithFrame未实现接口。只提供预览preview和打印print两个接口。
printer.preview(string id);
说明:将当前页面转成preview的数据,数据在previewDataCallback事件中返回
参数说明:
返回值:void
注意:给定的节点请使用内联样式
printer.print(string id)
说明:将当前页面的内容进行打印
返回值:void
注意:给定的节点请使用内联样式,否则样式会丢失
printer.useDefaultSetting(bool use)
说明:将当前页面的内容进行打印
返回值:void
printer.useCustomPaperSize (int width, int height)
说明:设置使用自定义尺寸纸张(面单打印,请使用自定义的面单纸张大小,单位:毫米的十分之一为单位)
参数说明:
返回值:void
使用事件时,需动态的绑定javascript函数为响应事件函数,不绑定表示不关心该事件
//预览数据事件
printer.previewDataStarted
说明:预览数据转换开始事件
参数:无
printer.previewDataCallback(string base64_data)
说明:预览数据事件,数据在参数中
参数:base64_data string类型 转换页的预览数据 为base64 buffer
printer.previewDataCompleted
说明:预览数据事件转换完成事件
参数:无
//打印事件
printer.printStarted
说明:打印开始事件
参数:无
printer.printCallback
说明:打印事件
参数:无
printer.printCompleted
说明:打印结束事件
参数:无
//打印属性
printer.duplex
说明:是否双面打印
取值:true/false
printer.copys
说明:打印份数
取值:int
printer.layout
说明:内容布局,横向打印或者纵向打印
取值:horizontal = 0 / vertical = 1
printer.marginX
说明:布局属性, 打印内容X轴偏移像素值
取值:任意整数,负数也行
printer.marginY
说明:布局属性, 打印内容Y轴偏移像素值
取值:任意整数,负数也行
printer.printers //只读
说明:枚举本地以及网络连接的打印机,如:printer1;printer2;printer3
取值:无
printer.currentPrinter
说明:设置当前使用的打印机
取值:字符串,如“my-printer1”
printer.paper
说明:设置纸张大小
取值: A3 = 0 / 未支持
A4 = 1 /
A5 = 2 / 未支持
二联=3 / 未支持
三联(241规格二等分241X140)= 4 /
三联(241规格一等分241X280)= 5 /
三联(241规格三等分241X93.1)= 6 /
三联(241规格四等分241X70)= 7 /
关于打印内容的像素最大限制:
每个类型的纸张或自定义纸张,都有对页面内容宽度和高度的最大值有限制,一旦超出最大值,打印机打印的效果不可控,所以需要ISV对打印内容进行分页。
最大像素值的计算:(毫米大小 * 72) / 25.4
常见纸张大小的像素限制:
A4(210mm × 297mm):595px × 842 px
三联打印纸,一等份、二等份、三等份、四等分的尺寸分别是:(241×280)、(241×140)、(241×93.1)、(241×70),所以最大像素限制分别是:683×794,683×397,683×264,683×198
//设置打印属性
printer.duplex = false/true 是否双面打印
printer.copys = n 打印份数
printer.layout = 0 (horizontal) / 1(vertical) 横打或纵打
printer.printers 枚举打印机名 如:printer1;printer2;printer3
printer.paper = 1 (A4) 设置纸张类型
//绑定打印事件
printer.previewDataCallback = "dataTranslated";
printer.previewDataStarted = "dataTranslatedStarted";
printer.previewDataCompleted = "dataTranslatedCompleted";
printer.printCallback = "printEvnet";
printer.printStarted = "printStarted";
printer.printCompleted = "printCompleted";
//打印预览 ,在previewDataCallback事件中进行处理
function dataTranslated(data) {
var srcData = "data:image/png;base64, " + data;
var previewDiv = document.getElementById("FramePrieviewHolder");
var previewImg = document.createElement("img");
previewImg.setAttribute("src", srcData);
previewImg.setAttribute("width", "300px");
previewImg.setAttribute("height", "380px");
previewDiv.appendChild(previewImg);
}
function dataTranslatedStarted() {
//alert("dataTranslatedStarted");
}
function dataTranslatedCompleted() {
//alert("dataTranslatedCompleted");
}
function printEvnet() {
//alert("printEvnet");
}
function printStarted() {
//alert("printStarted");
}
//连打,多打在上一次打印完成时进行next,需要控制多打结束的条件
var count = 2;
function printCompleted() {
alert("printCompleted");
if (count > 0) {
//TestPrint();
}
count--;
}
//预览测试
function TestPreview() {
printer. preview ("div_node ");
}
//打印测试
function TestPrint() {
printer.copys = 3; //打印份数
printer.marginX = 200;
printer.paper = 1; //A4
printer.print("div_node");
}