我最近尝试在Silverlight 4中生成报告.在我的问题域中,这些报告需要直接转到打印机和/或客户端SL应用程序创建PDF并允许用户将其存储在某处.
至于报告,它大致由50%流文本(包括枚举),30%表和20%图表组成.流动文本部分使其更具挑战性,因为必须进行适当的断线.
到目前为止,我尝试了以下方法 - 每种方法都有自己的缺点,使它们不那么可行:
Silverlight自己PrintDocument:从技术上讲,有两个主要问题.首先,让分页工作正常工作,并在适当的布局上打印UIElements是一个肮脏的hackjob和充满妥协; 幸运的是,到目前为止,我已经成功完成了这项工作.但是,PrintDocument该类始终将所有视觉效果呈现为位图,然后再将其发送出去; 如果使用PDF打印机并希望仍能搜索/选择文本,这并不是那么有趣.David Poll在"Silverlight and Beyond" [1]中采用的方法并没有那么有用,因为它本身就遵循相同的方法,因此遇到了非常相似的问题.
silverPDF [2]:一个几乎没有文件记录的库,需要手动完成大部分布局(前一种方法至少允许我重复使用Silverlight的布局引擎).到目前为止,我认为没有办法(例如)测量段落,并且使用long flowtext的唯一样本使用布局矩形的硬编码绝对值.此外,发展方似乎不活跃.
就个人而言,我现在正在考虑采用完全不同的策略:简单地生成HTML文档.但我希望这里的社区可能对上述两种方法有所暗示,或者知道其他好方法.
提前谢谢,〜曼尼
您是否需要在客户端上生成报告,或者您是否可以让服务器生成它?如果您可以在服务器上生成它,那么您的选择会更好.就个人而言,我认为目前Silverlight打印的工作方式非常差,因为报告的使用(将每个页面作为光栅而不是矢量发送到打印机,导致可能会有大量数据通过网络传输,并且打印质量输出较低).我发现最好的策略是在服务器上生成PDF(使您能够利用报告引擎),并将其显示在您的应用程序中.还有一些商业产品(例如Telerik的Silverlight Report Viewer,Report Sharp Shooter,甚至是First Floor Software的Document Toolkit).如果真的需要客户端解决方案,也许其中一个可能是最佳选择(尽管打印质量仍然很差).请注意,Silverlight 5应该支持矢量打印,但距离发布还有6个月或更长时间.另一个选择是Pete Brown和David Poll的开源报告框架:http://silverlightreporting.codeplex.com/.
如果你想选择在服务器上生成报告作为PDF并在你的应用程序中显示它,我在这里写了一篇关于这样做的文章:http://www.silverlightshow.net/items/Building-a -Silverlight-Line-Of-Business-Application-Part-6.aspx.这不适用于OOB应用程序,但我的书(Prolight应用程序与Silverlight 4)附带的源代码可以:apress.com/book/view/9781430272076.
希望这可以帮助...
克里斯安德森
| 归档时间: |
|
| 查看次数: |
7187 次 |
| 最近记录: |