2013第39周一Web打印
1、使用Crystal Report等通用报表组件来完成。
优点:功能强大,对于CS/BS都可以通用,Crystal Report等甚至与还有Report Service等功能,对于业务流程非常复杂的大项目应该是很适合的了。这种项目人手充足,时间充足,资金也充足,老板也重视。(这是个人猜测,因为我没做过大项目^_^)。
缺点:工作量大,对每一个报表都需要设计模板,这个需要花费不少的时间和精力。我们这种小项目,流程不复杂,Report Service等功能用不上,也不用CS/BS通用,也许将来某个时候需要需要在C/S下用,但还不知道那是什么时候。就是需要控制页边距、纸张大小等,然后把当前界面或者某个报表(很少的情况)打印出来就可以了。另外,我们因为项目小,所以项目成员也少,也就5~6个人,项目的开发周期也短,也就2~3个月,如果还需要抽出人手来专门做报表模板,还真有点紧张。看着兄弟们加班加点,还真不忍心再加大工作量。还有一个最要命的是,这些东西真的贵。资金本来就少,还需要买这些服务,一谈起这个事情,老板总是摇头。
2、使用IE自带的打印功能,加上CSS的支持。
优点:不用专人花时间来写打印模板,节省时间,也不要另外花钱,老板很高兴。似乎是一个好的方案。
缺点:功能太弱小了。不能控制页边距、纸张大小等,更不用说不打印当前界面而是打印另外一个报表了。这样,客户就不高兴了,干嘛非得每次让我自己设置页边距、设置纸张大小、设置页眉页脚等,或者是有些报表根本就没有提供。
3、使用meadroid等提供的免费客户端打印组件。
优点:同2。
缺点:meadroid的这个东西很好,可惜只能使用半年。半年之后你必须重新下载,并更改该组件的GUID,真麻烦。如果用户这个时候正好需要打印,那真是臭大了。而且,如果你想避免这种情况的发生,那就请交钱吧,即使是1年的费用好像也不便宜。这样的话,我们似乎又回到了第一个解决方案。当然还有许多其他公司提供的免费组件,但是性质和meadroid公司提供的都差不多,费用有便宜的,也有贵的,总的说来,老板都总是摇头。
4、使用服务器端生成PDF等文件的方式。
优点:现在生成PDF文件的免费组件很多,不用另外花钱。效果也很好。
缺点:学习困难。代码量也非常大。而且,对于我们这种需求多变的小项目,一旦客户的要求变了,那么就必须相应的更改代码。维护的代价真的高。
常用免费控件如下:
1、 DLPrinter
这个打印控件完全免费,界面还不错,使用也较为简单,支持打印预览、直接打印、可设置页眉、页脚、页边距、打印份数、纸张大小等信息,悲剧的是这大哥在07年做了第二次更新后就没有后续了,导致在我在ie8下测试的时候,bug不断,更不要说现在流行的ie10,可惜了。
他的博客地址:http://www.cnblogs.com/Yahong111/ 里面有几篇“也谈Web打印”文章写的非常棒,大家可以去学习下。
2、墙外打印控件
墙外打印控件(QWPrint)是一款小巧的打印辅助软件,能够帮助众多制作B/S类程序的程序员更加灵活的控制客户端打印。
注意的是这个控件的2.0是收费版【无视】,以它免费版1.3.8.2为例做了测试。有如下功能:
.小巧轻便,客户端在第一次使用时只要下载一个ActiveX控件即可使用。因为这个控件没有微软的签名,所以做好调整ie安全设置的准备。
.控制多种打印设置。程序员可以通过控件进行多项设置,包括设置打纸的页边距,页眉页脚,纸张大小等参数。
.精确控制打印。可以方便实现web下的套打操作。
.可是它有一个缺点就是无法选择默认打印机,有三、四台打印机的情况下,用户每次打印时必须不断的去选择打印机...这对客户来说是没有办法接受的,所以只好放弃。
3、楚琳Web打印控件
楚琳Web打印控件是以C/S架构的报表工具进行B/S架构的报表设计,有如下功能:
.报表功能强大,报表设计采用FastReport,可以和水晶报表媲美,支持自定义纸张大小,支持直接打印。
.报表设计高效而简单,和C/S架构下的报表设计效率差不多。
.方便的中国式报表的设计,可以快速而准确设计出报表中的表格线。
.支持ASP, ASP.NET, PHP, JSP等多开发语言。
.支持简体中文、英文、繁体中文等多国语言。
.免费使用,免费版无功能和时间限制。
.这个打印控件偏重于报表打印。
4、 jatoolsPrinter 免费版(强烈推荐):似乎免费版不能商用,没再做具体研究
国内最早的web打印控件,以前有所谓的破解版,jatoolsP.cab,这个免费版,算是这个版本的升级版,可以完美解决原版本jatoolsP.cab中不支持ie9,ie10的问题,有如下功能:
.真正免费,不加水印,没有ip或域名限制,不限时间,带微软数字签名,无限发行,兼容ie6+及ie为内核的浏览器。
.无须注册,下载即用
.设置纸张类型,如A4、A3等
.设置纸张方向(横向、纵向)
.设置页边距
.设置输出打印机
.支持手动分页(按div分页);
.支持直接打印(不显示打印机选择对话框)
.支持打印份数控制
来源: <分享几款免费的web打印控件 - 免费web打印控件 - web - ITeye论坛>
基于web的套打,难度在于要将浏览器中呈现的html,精确地打印到票据中,而且能够实现对分页位置的控制。下面就ie浏览器所能采用的套打解决方案,来个汇总分析,希望对大家有所帮助。
jatoolsPrinter 是一款实现网页套打的免费工具。该工具的特点是可以直接对web页面进行精确的分页打印,这不仅使“会设计网页就会做网页套打”成为可能,也使项目经理们摆脱了预算紧张的压力。jatoolsPrinter通过在网页中嵌入控件,解决了web客户端精确打印,批量打印,打印配置自动保留等问题。jatoolsPrinter 官方正式免费版,支持ie6+,http://printfree.jatools.com。
功能特点:
真正免费,不加水印,没有ip或域名限制,不限时间,兼容ie6+
无须注册,下载即用
提供经过微软数字签名的cab自动安装包,安装更方便
长期升级保障,免费论坛支持,让你无后顾之忧
稳定可靠,启动速度远胜同类产品
常用功能集于一身,简约而不简单,软件大小只有84k
本文主要介绍jatoolsPrinter打印控件来完成web的打印功能,这个控件已经把打印功能封装的非常好,主要是把这个控件引入,之后写一些简单的js代码就能完成相应的打印功能。
//打印文档对象 var
// 打印页面(div)们在本文档中 copyrights: '杰创软件拥有版权 www.jatools.com' // 版权声明必须
// 调用打印方法 if (how == '打印预览...'
// 打印预览
else if (how == '打印...'
true); // 打印前弹出打印设置对话框
else jatoolsPrinter.print(myDoc, false); // 不弹出对话框打印
</script></head><body> <form id="form1" runat="server"> <div id='page1' style='width:300px;height:300px;'>
</div> <input type="button" value="打印预览..." onclick="doPrint('打印预览...')"/> <input type="button" value="打印..." onclick="doPrint('打印...')"/> <input type="button" value="打印" onclick="doPrint('打印')"/> </form></body></html>
主要分几个步骤:
一、引入打印控件jatoolsPrinter
.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }
二、给要打印的div取id名

三、编写js代码实现打印div的功能
(注意:在同一页面中,有多个可打印文档,他们可以用page_div_prefix属性来区别page_div_prefix前缀+page+页序号 构成可打印div的id,如前缀为 'report1' ,则找到以 'report1page1'为id的div作为文档首页该属性,默认值为空)
.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }
注意事项:
1. 控件在打印指定div对象时,如果纸张太小不够打印时,超出部分将被截掉(clip)。
2. 被指定的div中的内容,可以是html任何可见对象,图片,flash,或文本等等。
3. 控件打印时,边距可设,不设则取打印机默认值。
4. div的id必须连续,如果你的div,存在 'page1'、'page2'、'page4',而不存在'page3',则控件只打印前两页,'page4'不会被打印。
5. div对象在页面中的位置,可以是随意的,比如,page1显示在page2后面,也是合法的。
6. 指定的div会被打印,没被指定的html元素将不会被打印,比如,本示例中的‘打印’按钮,不会被打印。
7. copyrights属性是版权信息,必须写。
2013第39周一Web打印的更多相关文章
- Web打印--Lodop API
Lodop是一款专业的WEB打印控件,其设计目标是简单易用.功能足够强大,开创WEB打印开发的新局面. Lodop设计者对WEB下的打印开发任务进行了分类汇总,高度抽象,设计出仅用几个功能函数,就可实 ...
- 2013第49周一jsp标签
2013第49周一jsp标签 今天在调试一些前台页面上的问题,在处理structs标签.jstl标签时遇到了些麻烦,为了调用后台数据字典中的类方法,开始在<c:forEach>中尝试怎么样 ...
- WEB打印插件Lodop
Lodop.C-Lodop使用说明及样例 Lodop(标音:劳道谱,俗称:露肚皮)是专业WEB控件,用它既可裁剪输出页面内容,又可用程序代码直接实现 复杂打印.控件功能强大,却简单易用,所有调用如 ...
- WEB打印插件jatoolsPrinter
为什么选择 jatoolsPrinter 免费版? 支持无预览直接打印 真正免费,不加水印,没有ip或域名限制,不限时间,兼容ie6+ 无须注册,下载即用 提供经过微软数字签名的cab自动安装包,安装 ...
- WEB打印控件Lodop(V6.x)使用说明及样例
WEB打印控件Lodop(V6.x)使用说明及样例 Lodop是专业WEB控件,用它既可裁剪输出页面内容,又可用程序代码生成复杂打印页. 控件功能强大,却简单易用,所有调用如同JavaScript扩展 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-Web打印
系列目录 前言 1.本次主要弥补工作流,用户表单数据的打印 2.使用JQprint做为web打印插件 3.兼容:FireFox,Chrome,IE. 4.没有依赖也没有配置,使用简单 代码下载:htt ...
- Web打印控件
Lodop是什么? 有人说她是Web打印控件,因为她能打印.在浏览器中以插件的形式出现,用简单一行语句就把整个网页打印出来: 有人说她是打印编程接口,因为她介于浏览器和打印设备之间,是个通道和桥梁,几 ...
- 在 SharePoint 2013 中配置 Office Web Apps
原文发布于 2012 年 7 月 23 日(星期一) 如您所知或您即将知道,SharePoint 2013 中的 Office Web Apps 不再是 SharePoint 场中的服务应用程序.相反 ...
- JS Web打印,实现预览新样式
问题描述: JS实现Web打印,要求打印前一种样式,打印预览时新样式 问题解决: (1)设置打印时的css样式,设置打印前的css样式 注: 以上为print. ...
随机推荐
- 【服务器运维】Windows Server 2008 R2 下配置证书服务器和HTTPS
前言 2017年1月1日起App Store上的所有App应用将强制开启ATS功能. 苹果的ATS(App Transport Security)对服务器硬性3点要求: ① ATS要求TLS1.2或者 ...
- js:jquery multiSelect 多选下拉框实例
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 自然数e这家伙怎么蹦跶出来的?
自然数e这家伙怎么蹦跶出来的? 之前看过一篇中文介绍自然数e的blog,引起了我的兴趣 原文是阮一峰大牛(我认为必须很有必要尊敬的称,大牛)嚼烂了吐出来的哈哈,只是我认为还是自己去看原文比較好 感觉非 ...
- Android笔记之 文件保存、压缩与清空删除
这两天改进优化项目中图片上传的代码.考虑到可能有7.8M的比較大的图片,由于要先进行压缩.所以设计到文件的压缩,保存与清空删除操作. 在这里记下笔记. /** * 压缩并另存为,每次先清空再保存 */ ...
- 将activity设置成dialog样式如何设置窗口大小
具体做法和dialog窗口的设置类似,只需要在onCreate方法中,加入下列代码,既可以控制大小! // 设置窗体大小 ScreenUtil.getScreenWidth(LoadActivity ...
- 手工释放Linux内存
转载自:http://blog.csdn.net/wyzxg/article/details/7279986/ linux的内存查看: [root@localhost 0.1.0]# free -m ...
- hdu 2186
#include <iostream> using namespace std; int main() { int a,b,c,k1,k2,k3,m,n; cin>>m; wh ...
- 仿写Windows7桌面和任务栏 HTML5+CSS3+Jquery实现
过去一段时间零零散散的自学了一点点jquery的相关用法,基本上属于用到哪个了,就去查然后就学一点,没有系统的学过,深入的用法也不是特别了解,毕竟javascript基础就比较薄弱.经过一段时间的零敲 ...
- 注意 reader["yjID"] == DBNull.Value而不是null
自己做的项目吃的大亏,由于原始数据yjID这个字段里面什么都没有,所以,这个地方报错,说是字符串格式不支持,应该为DBNull.Value而不是null,DBNull.Value代表数据库(用的acc ...
- Probably at least one of the constraints in the following list is one you don't want.
这个提示并不是出错,不理会它我的程序也没出现什么问题 但是处于强迫症,还是努力寻找解决的方法... 最终发现问题如下: 在xib各种绘制和添加约束的UITableViewCell之后,在某一特定情况想 ...