我最近尝试在 Silverlight 4 中生成报告。在我的问题域中,这些报告要么需要直接发送到打印机和/或客户端 SL 应用程序创建一个 PDF 并允许用户将其存储在某处。
至于报告,它大致由 50% 的流文本(包括枚举)、30% 的表格和 20% 的图表组成。流文本部分使其更具挑战性,因为必须进行适当的换行。
到目前为止,我已经尝试了以下方法——每种方法都有自己的缺点,使它们不太可行:
PrintDocument
: 从技术上讲,有两个主要问题。一方面,让分页符工作并以适当的布局在其上打印 UIElements 是一种肮脏的黑客工作,并且充满了妥协;谢天谢地,这是我迄今为止设法开始工作的部分。然而,PrintDocument
类总是在发送它们之前将所有视觉效果呈现为位图;如果您使用 PDF 打印机并希望仍然能够搜索/选择文本,这不是很有趣。 David Poll 在“Silverlight and Beyond”中的方法[1]并没有那么有用,因为它本质上遵循相同的方法,因此遇到了非常相似的问题。 就个人而言,我现在正在考虑采用一种完全不同的策略:简单地生成 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 应用程序,但我的书(Pro Business Applications with Silverlight 4)随附的源代码可以:apress.com/book/view/9781430272076。
希望这可以帮助...
克里斯·安德森
关于silverlight - 在 Silverlight 中创建报告(以 PDF 格式或将其发送到打印机),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4942990/