网站首页 > 技术文章 正文
浏览器下自定义打印,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程序中使用的设计工具。 设计打印模板的图示如下:
A.左边是报表组件栏,把报表组件拖动到打印页面上,选择报表组件第2个组件,插入band,插入band类型,放置到打印设计页面上;
B.通常band分为三部分:
页头(或报表标题)、主项数据、页脚(或报表合计)三部分;
C.选择报表组件的第1个组件,插入矩形对象。
页头(报表标题)等:打印的标题等设置在此上面。
主项数据:打印的数据内容设置在此上面,插入矩形对象后,编辑录入对应的xml数据中的字段。
页脚(报表合计):打印的结尾内容或合计数据放置到此位置。
选择具体的矩形编辑内容框,双击后在里面录入字段或文字;或者选择后,使用上方的编辑框设置进行文字、字体大小等进行设置。
D.保存:
打印模板样式设计完成后,点击文件->保存,把此打印模板起好文件名,保存到web打印服务程序里面的文件夹中。
二:生成打印数据
A.在使用的开发语言PHP,JAVA,C#,GO等等各种开发工具;使用select语句得到待打印的数据后;
B.把数据进行转换,生成.示例为.XML格式的数据;
C.把生成的.XML格式的数据传递到html前端页面上。
XML数据样例:
三:html网页调用
A.在html网页中加载上js文件。示例如下:
B.在html网页中放置 打印 按钮。编写打印函数,例如Prints();
在打印函数function Prints(){
................
.........................
此处调用js打印函数,local_print(操作员, 打印模板名称, 打印数据) ; //此为打印数据传输...打印模板,xmls是打印数据。
.............
.....
}
D.点击 打印 按钮。即可完成打印。
如果想在手机上打印,比如直接在手机上录入销售开单后,点击打印按钮,就打印到指定的普通打印机上了。
如果想异地打印,根据操作员登录编号,也可以打印到几千公里之外的某台打印机上。
总之,还是很方便、很灵活的。
猜你喜欢
- 2025-05-28 改善施乐5575系列,打印输出纸张前端、后端有粘碳粉现象
- 2025-05-28 3D打印,演绎制造新传奇
- 2025-05-28 世界最大规模3D打印混凝土步行桥落户上海科普公园
- 2025-05-28 【实战篇】数字化打印——打印部署管理接口开发
- 2025-05-28 前端实用技术分享—用Vue实现打印指定区域
- 2025-05-28 行业案例:高效打印,智能办公
- 2024-09-25 上海首座3D打印书屋亮相!可容纳15人,有地暖有天窗
- 2024-09-25 “JVM” 上的AOP:Java Agent 实战
- 2024-09-25 Python短文,关于print函数的基础用法(一)
- 2024-09-25 电子签章处理文件和打印基于ABP框架的前端项目Vue&Element
你 发表评论:
欢迎- 500℃几个Oracle空值处理函数 oracle处理null值的函数
- 494℃Oracle分析函数之Lag和Lead()使用
- 493℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 481℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 472℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 468℃【数据统计分析】详解Oracle分组函数之CUBE
- 453℃Oracle有哪些常见的函数? oracle中常用的函数
- 448℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 最近发表
-
- Spring Boot跨域难题终结者:3种方案,从此告别CORS噩梦!
- 京东大佬问我,SpringBoot为什么会出现跨域问题?如何解决?
- 在 Spring Boot3 中轻松解决接口跨域访问问题
- 最常见五种跨域解决方案(常见跨域及其解决方案)
- Java Web开发中优雅应对跨域问题(java跨域问题解决办法)
- Spring Boot解决跨域最全指南:从入门到放弃?不,到根治!
- Spring Boot跨域问题终极解决方案:3种方案彻底告别CORS错误
- Spring Cloud 轻松解决跨域,别再乱用了
- Github 太狠了,居然把 "master" 干掉了
- IntelliJ IDEA 调试 Java 8,实在太香了
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)