Silverlight打印解决方案2.1正式发布(支持打印预览、页面设置(横向纵向,页边距,纸张大小、字体大小)、自动分页和多页连续打印)
2012-07-18 17:44 slmk 阅读(4207) 评论(5) 编辑 收藏 举报此次版本更新,主要是针对用户的反馈意见进行的。本着尽量多写Demo,少写文档的原则。毕竟文档千言,不如代码一行,关键是我语言表达能力也不行啊!:)
主要实现以下新功能:
1、不弹出打印对话框(需要提升的权限,只支持Silverlight 5):
Silverlight 5支持使用默认打印机直接打印,而不弹出打印对话框。但是,需要用户权限提升,如果是OOB浏览器外应用的话只需要两步:
你的应用程序项目属性,中勾选:
点击"浏览器外设置",勾选:
如果是浏览器内运行的程序,需要设置成浏览器内受信任的应用程序,参见我的另一篇文章:企业内部使用Silverlight5浏览器内受信任的应用程序
调用很简单:
Report.Print(true); //传参数true即可
2、设置打印纸张大小和方向(需要提升的权限)
silverlight完全受信任运行时,可以通过平台调用PInvoke做任何事情,当然包括改变打印纸张大小和方向。
3、增加多个回调函数,让用户对打印过程有更多控制,有更多自由发挥的空间。
例如:1)实现“本页小计”功能,可以通过“PrintPageFooterCallBack”回调,在页脚添加:
甚至可以在表体最后一行添加:
2)通过“PrintReportFooterCallBack”,可以在报表的最后打印图表等任何东西,并实现自动分页。
4、从单独的文件中,或者从字符串中加载报表模板:
有时我们可能需要将报表定义放到单独的文件中,或者从后台加载报表定义,然后绑定数据源。详情参见Demo-“动态加载表模板”
5、自定义表体:
通常情况下,我们的表体是二维表格的形式。如果你的表体不是,例如是一条记录一个表。这可以通过自定义项模板实现,同样可以实现自动分页。其实这不是什么新功能,只是Demo中没有演示。详情可参见我的另一篇blog:Silverlight打印解决方案2.0之如何自定义表体
6、套打:
其实只要对Silverlight的数据绑定熟悉的话,可以很轻松的实现套打。Demo中有两个例子,可以参考。
7、手动分页:
支持手动插入分页符,是通过报表的ManualPager数组实现的。
8、动态表头:
如果要实现按月统计订单的功能,动态设置表头的数据源还是需要有的!
9、报表组合:
有时我们需要把几份报表合成一份打印,可以定义多个Report对象,将其组合起来就可以了!
789在一个Demo中演示——“手动分页/动态设置页头/分月份合计/报表组合”
10、动态设置表头、表体和表尾的数据模板
由于报表控件不能可视化设计,对于不熟悉Xaml的开发人员是个问题。数据模板支持动态设置,我们就可以用VS或Blend设计好模板,然后加载了。 参见Demo-套打(子报表)
11、打印预览对话框随着容器窗口的改变而改变。
预览对话框继承自ChildWindow,我们会发现当我们改变了容器窗口,例如浏览器窗口缩小或放大了,全屏预览窗口不会随之改变。此次版本更新解决了这个问题。
Bug修复:
多层表头在特殊情况下,通常是多于2层时表格线显示不对的bug。
注意:
1) 程序使用vs 2010 sp1和Silverlight 5 开发。如果不能打开解决方案,可能是没有安装Microsoft® Silverlight® 5 Tools for Visual Studio® 2010 SP1。
安装Microsoft® Silverlight® 5 Tools for Visual Studio® 2010 SP1
2) 如果如果源代码编译出错,可能是没有安装Silverlight Toolkit
获取全部源代码
购买以前版本的用户请注意查收是否收到此次更新的源代码,您的支持就是我的动力!