大佬教程收集整理的这篇文章主要介绍了Silverlight企业应用实战:SL 4.0 打印,让我拿什么说爱你?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
目录:
一、基本原理
二、一些限制
三、打印,想说爱你却并不容易
一、基本原理
网上有很多关于SL 4.0的教程,其中不乏介绍SL 4.0@L_489_0@重要的新特性(也是企业应用非常重要的特性)——打印。这里简单的讲解一下,会了的同学可以直接跳过这一部分。
实现打印主要使用PrintDocument类。
var document = new PrintDocument();
PrintDocument类主要有1个关键事件,1个关键方法
document.PrintPage += new EventHandler(document_PrintPagE); document.Print("Test Document"); PrintPage事件的用法如下:void document_PrintPage(object sender,PrintPageEventArgs E) { e.PageVisual = new Rectangle() { Fill = new SolidColorBrush(Colors.bluE) }; //要打印的UIElement e.HasMorePages = false; //默认为false }
如果为多页打印,则需要将 e.HasMorePages = true
此时PrintPage事件将被多次触发,直到e.HasMorePages为false为止。
PrintDocument类还有2个事件,分别是BeginPrint和EndPrint,分别在打印任务开始和结束时触发(无论多少页,各触发一次)。
二、一些限制
在实际使用过程中发现PrintDocument类的使用有一些限制。
以上两种错误的使用方法都会抛出SecurityException:对话框必须由用户启动。
PrintDocument是通过调用COM组件实现打印的,类似于:SaveFileDialog、OpenFileDialog等。请使用时注意使用场景的限制。
三、打印,想说爱你却并不容易
打印这一功能,我相信很多人和我们一样,盼星星盼月亮~终于盼到SL 4.0正式发布的日子。
我们也是立即马不停蹄的开发SE的新特性,并将打印列为了比较重要的一块儿。
经过我们团队的 @大贲 (ben,1声,女孩子哦,技术可不输你们~)辛勤努力,我们在SE中实现了打印和打印预览功能。
打印预览:支持单页和多页预览、设置纸张类型、方向、显示页眉、页脚、显示打印人、显示打印时间等功能。
就在我们认为一切OK,只等SE 4.0上线就可以将该功能交付客户使用的时候,却惊讶的发现由Silverlight产生的打印文档竟然有123MB之巨!而且还是单页!
我们知道SL 4.0的打印是基于位图的,也知道位图肯定要比矢量图大,但是我们没有想到的是。。大的也太多了吧!!
(我们测试了@L_489_0@分页为4页的文档,竟然有492MB之巨,直接的结果就是。。。打印机死掉了。。。)
============== 无奈的分割线 ==============
我们将该问题反馈给微软后,得到的答复如下:
对于SL打印的改进,微软的回复如下:
============== 最后总结的分割线 ==============
经过公司层面慎重讨论,我们不得不从SE 4.0版本中撤下SL 4.0原生打印支持这一特性。
作为软件服务提供商,我们不能要求我们的客户去做什么,我们只能将最简单、最好用的功能提供给客户。
向在这一特性上花费了时间和精力的同事们致敬,我也相信在这一过程中你们学到了很多东西。
至少,我们知道,SL 4.0之后我们还在盼着什么~
打印,SL 5.0再会!!!
以上是大佬教程为你收集整理的Silverlight企业应用实战:SL 4.0 打印,让我拿什么说爱你?全部内容,希望文章能够帮你解决Silverlight企业应用实战:SL 4.0 打印,让我拿什么说爱你?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。