浏览器下自定义打印,web精准打印,BS程序中打印一直以来是一个难题,在bs应用中完成货品标签打印,单据打印,印刷好的票据套打等。

我们在自己的软件中,最初是自己写的Activex插件,在bs软件中调用;Activex打印插件在IE浏览器中可以,在Chrome,Edge,FrIEfox中调用就不方便。后来改变了一下思路,不再用控件的方式,直接写个打印服务,浏览器和自己写的打印服务通讯,直接通过打印服务来进行自定义打印,精准打印。

一:web打印服务是个程序

1:是介于浏览器和打印设备之间的桥梁,是一个通道;

2:它是一个独立打印服务,在本地运行,不需要浏览器加载;也不需要对浏览器安全设置;

3:没有繁琐复杂的API接口,只需要JavaScript的几行代码,和JS语法一样,看一看调用例子就一目了然;

4:它可以精准打印,进行套打、根据设置的模板进行各种自定义的打印;

5:它可以打印开票单据、统计报表、也可以打印各种条码;打印模板存储在本地,同样的数据,可打印出不同的样式;

6:它可以导出保存为各种文件,Excel,Word,Rtf、XML文字格式,也可以导出保存为JPG的图片格式;

7:它体积小巧,不到3M,无需安装,直接解压缩后即可,绿色使用;

8:使用它只需要做三件事:1像Word操作一样,画好打印模板;2定义好要打印的XML格式的数据;3然后调用几行JS代码传给它就可以了;

9:支持各种浏览器,IE,Chrome,Edge,Friefox以及您使用个各种浏览器;

10:可以在电脑上打印,也可以在手机上打印,可以单个打印,也可以批量打印;

11:支持32位和64位系统,或者干脆说不需要区分;

二: 使用方式:

1:设计打印模板

模板类似于Word的操作方式,可以划线;设置文字大小;文字字体等等;类似于CS程序中使用的设计工具。 设计打印模板的图示如下:

web打印控制(WEB中的精确打印一直是一个难题)(1)

A.左边是报表组件栏,把报表组件拖动到打印页面上,选择报表组件第2个组件,插入band,插入band类型,放置到打印设计页面上;B.通常band分为三部分:页头(或报表标题)、主项数据、页脚(或报表合计)三部分;C.选择报表组件的第1个组件,插入矩形对象。页头(报表标题)等:打印的标题等设置在此上面。主项数据:打印的数据内容设置在此上面,插入矩形对象后,编辑录入对应的xml数据中的字段。页脚(报表合计):打印的结尾内容或合计数据放置到此位置。选择具体的矩形编辑内容框,双击后在里面录入字段或文字;或者选择后,使用上方的编辑框设置进行文字、字体大小等进行设置。 D.保存:打印模板样式设计完成后,点击文件->保存,把此打印模板起好文件名,保存到web打印服务程序里面的文件夹中。

二:生成打印数据

A.在使用的开发语言PHP,JAVA,C#,GO等等各种开发工具;使用select语句得到待打印的数据后;

B.把数据进行转换,生成.示例为.XML格式的数据;

C.把生成的.XML格式的数据传递到html前端页面上。

XML数据样例:

web打印控制(WEB中的精确打印一直是一个难题)(2)

三:html网页调用

A.在html网页中加载上js文件。示例如下:

B.在html网页中放置 打印 按钮。编写打印函数,例如Prints();

在打印函数function Prints(){

................

.........................

此处调用js打印函数,local_print(操作员, 打印模板名称, 打印数据) ; //此为打印数据传输...打印模板,xmls是打印数据。

.............

.....

}

D.点击 打印 按钮。即可完成打印。

如果想在手机上打印,比如直接在手机上录入销售开单后,点击打印按钮,就打印到指定的普通打印机上了。

如果想异地打印,根据操作员登录编号,也可以打印到几千公里之外的某台打印机上。

总之,还是很方便、很灵活的。

,