StratoIO WebPrinter的工作原理
来源:互联网 发布:万达网络信贷公司 编辑:程序博客网 时间:2024/05/10 08:35
背景
随着软件开发技术逐渐由C/S架构转向B/S架构,打印逐渐成为Web开发人员需要面临的问题。日益强大的CSS样式表技术可以很方便的实现复杂的布局与显示,但由于Web技术对程序的安全沙箱控制,打印的最后一步:输出到打印机却是一个难题。
我们调研了大量Web软件,发现针对Web打印解决方案,主要有如下几种技术实现方式:
1.直接调用Javascript打印
通过调用浏览器window对象内置的print方法弹出打印窗口,用户点击确认打印。
这种方式是最简单的打印方法,其最大的问题是需要很大程度人工介入,用户手工需要设定页眉页脚、页边距,以及点击确认打印按钮。这极大地降低了应用的友好度,也无法适应一些高频操作的业务场景。
2.浏览器控件打印
另一部分开发者采用开发浏览器控件的方式,通过控件连接浏览器的打印SDK并提供Javascript桥接口供网页调用。
早期的代表是在IE浏览器中,JS通过ActiveX技术调用浏览器打印。这种随意调用本地控件的方式被证明为不安全的,同时随着火狐、谷歌等浏览器的兴起,兼容性问题也逐渐凸显。
由于浏览器控件开发技术门槛高,该类产品往往由专业的控件开发商研发并提供有偿使用。
控件很好地解决了交互性的问题。但浏览器控件随操作系统版本、位数、浏览器种类及版本不同,需要开发和维护不同的控件版本,同时主流浏览器的升级速度也十分敏捷,控件开发商往往无法跟上浏览器版本的脚步。此外大部分浏览器往往要求使用C语言开发,若缺乏一个好的内存管理模型,控件经常会因为内存问题而崩溃甚至导致浏览器崩溃。
3.本地代理
还有一种方式是在本地安装代理程序,由代理提供Http服务,网页通过跨域的请求技术提交打印任务并接收反馈。
这种方式的好处是脱离了浏览器的约束,避免因浏览器更新带来的版本延迟同步问题。
唯一的问题在于,这种方式需要提示用户下载并安装代理程序。
设计思路
Strato WebPrinter的核心理念,就是为开发人员提供高度可管理的、极度稳定的、高度自动化的打印解决方案。
经过多方技术调研与分析,我们决定采用第三种方案,即本地代理方式,作为应用场景的核心架构。并采用Java作为代理程序的开发语言,期望通过Java虚拟机技术的跨平台特性,及Java强大的内存管理能力,提供极度稳定的后台服务。
运行场景
Strato WebPritnter运行场景
说明:
页面通过JS API未检测到代理程序,提示用户安装;
用户从本地或CDN下载安装程序,并安装;
安装完成后启动代理程序,网页自动检测到代理程序,隐藏提示并切换到正常内容;
用户交互或自动执行JS API发送打印任务;
JS API注册回调函数或监听事件并修改任务状态;
反复运行直至完成打印。
文章来源:转自http://webprint.stratoio.com/doc/theory
- StratoIO WebPrinter的工作原理
- StratoIO WebPrinter在哪里下载?StratoIO WebPrinter怎么安装?StratoIO WebPrinter下载与安装的步骤
- StratoIO WebPrinter 是什么?StratoIO WebPrinter实现打印的过程,StratoIO WebPrinter Javascript API
- StratoIO WebPrinter打印控件是否支持双面打印?StratoIO WebPrinter 常见的问题,
- StratoIO WebPrinter Web打印控件的功能与特性
- StratoIO WebPrinter的几种打印方案,打印机池、并行打印、框架打印、移动端打印
- Strato WebPrinter的使用说明, Strato WebPrinter控制面板的设置
- 防火墙的工作原理
- 网上邻居的工作原理
- 路由器的工作原理
- DHCP的工作原理
- JDBC的工作原理
- Internet的工作原理
- EJB的工作原理
- Lucene的工作原理
- 网上邻居的工作原理
- session的工作原理
- 网上邻居的工作原理
- C++之运算符重载(上)
- Xlistview上拉、下拉
- redis集群的搭建
- MySQL远程连接丢失问题解决方法(Lost connection to MySQL server)
- BZOJ 1725 [Usaco2006 Nov]Corn Fields牧场的安排 状态压缩DP
- StratoIO WebPrinter的工作原理
- 解决Jenkins邮箱配置中,使用SSL连接的问题
- Android中GIF动图的播放控制和监听详解
- Java设计模式之中介者模式
- 【Python】 sorted函数
- WPF--MVVM之DataGrid数据源绑定
- 一部Web应用自动化部署的进化史[AWS]-使用shell实现CodeDeploy
- No resource identifier found for attribute 'roundIcon' in package
- 任意门效果