在B/S项目中需要打印大量的图片,我们使用window.print,但是当数据量大至上万的时候,将图片加载出来需要一些时间,加载出来之后打印,如果用户关闭了打印界面会导致打印页的缺失。
解决思路:
1.IE,使用ActiveX控件,非IE,使用Flash插件。这种思路不同的浏览器开发方式不一样,IE/FF/GROME
2.开发一个exe,客户端安装到本地服务,使用HTTP通讯方式。通过JS发送HTTP请求给本地的服务,本地服务起一个小型的HTTP server接收请求,然后返回数据,JS解析,显示在UI上。比如将打印的参数传值到本地服务,本地服务去调用打印机,使浏览器资源得到释放。
我们使用第二种思路。
尝试了以下方法:
1.HttpPrinter
采用原因 免费 ,OME费用很便宜的,而且不限制时间和数量.还可以购买源码的。
HttpPrinter.com
2.葡萄城的ActiveReports
中有B / s端的打印使用window.print实现
https://demo.grapecity.com.cn/ActiveReports/ASPNET/ControlExplorer/Viewers/Default.aspx?category=1001&action=14
另外有C / S端的打印,无法与浏览器交互,但是可以去改进
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=48785&extra=page%3D1
3. Lodop分为收费版与免费版
(1)使用Lodop插件,需要客户端安装一个服务,服务的端口默认是8000或18000
(2)如何购买和使用打印控件的Lodop的注册号
http://blog.sina.com.cn/s/blog_721e77e50100nfzs.html
(3)Lodop样例演示
http://www.lodop.net/LodopDemo.html
考量问题:
(1)免费版有水印
4. JCP分为收费版与免费版
安装程序需要替换
网官 http://printfree.jatools.com/
考量问题:
免费版只适合于IE浏览器
图片需要渲染到页面,打印时释放浏览器资源可以做其他 *** 作
收费版jatoolsPrint支持大部分浏览器
5.jquery打印
底层是window.print方法
最后考量,我们决定将的ActiveReports中的C / S端程序打包成EXE,利用自定义协议实现打开本地exe服务,使用HTTP方式实现浏览器与本地服务的通讯。
WEB软件打印功能实现方式:1、浏览器本身的打印功能,效果最差。
2、在web服务器上产生好PDF或Excel文件,下载到本地打印。很多在服务器端运行的报表软件采用这样的方式。因为就是下载文件,所以各种浏览器都支持。缺点就用户 *** 作麻烦,服务器附载大。
3、报表插件方式,可以做到与桌面软件一样的打印功能,这种方式实现的效果最好。缺点就是插件是针对特定浏览器的,不能做到支持各种浏览器,报表插件一般是支持IE浏览器。
综合考虑,看用哪种方式合适。
我们一直用锐浪报表插件,报表与打印都很满意。
问题分析:1.连接打印机的那台电脑你肯定更改了什么系统设置.
如:系统重装、再添加了打印机。
2.共享的另外两台电脑系统有可能更改了什么设置。
解决方法:
1.在连接设备那台打印机的电脑着手,具体步骤如下:
开始---运行----cmd---在dos里输入ipconfig(看当前ip),然后看有一项是ip
address,后面是本台电脑的ip地址。把它记录下来。
然后共享这台打印机。
2.在另外两台电脑上在打印机设置那个文件夹里删除原来的打印机,右键删除就行了。
3.在我的电脑地址栏里输入\\192.168.x.x(刚才记录的ip),然后回车。
4.看到有一台是192.168.x.x的打印机右键连接,然后在打印机设置那个文件夹里把它设置成默认打印机。
注:
网上邻居在桌面属性,然后点第二项,桌面的自定义里把网上邻居打钩就可以在桌面上显示。
这样如果 *** 作上没有失误95%可以解决问题。
注:
如果在地址栏里输入ip找不到的话那肯定是不在同一个居域网.要求重新创建一下居域网就行了.默认下是workgroup.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)