【问题标题】:Creating Reports in Silverlight (either as PDF or send it off to a printer)在 Silverlight 中创建报告(PDF 格式或发送到打印机)
【发布时间】:2011-02-09 09:16:40
【问题描述】:

我最近尝试在 Silverlight 4 中生成报告。在我的问题域中,这些报告需要直接发送到打印机和/或客户端 SL 应用程序创建 PDF 并允许用户将其存储在某处。

就报告而言,它大致由 50% 的流文本(包括枚举)、30% 的表格和 20% 的图表组成。流文本部分使其更具挑战性,因为必须进行适当的换行。

到目前为止,我已经尝试了以下方法 - 每种方法都有自己的缺点,使它们不太可行:

  • Silverlight 自己的PrintDocument:从技术上讲,有两个主要问题。一方面,让分页符工作并以适当的布局在其上打印 UIElements 有点肮脏,而且充满了妥协。谢天谢地,这是我迄今为止设法开始工作的部分。但是,PrintDocument 类总是将所有视觉效果呈现为位图,然后再发送它们;如果一个人使用 PDF 打印机并希望仍然能够搜索/选择文本,这并不是很有趣。 David Poll 在“Silverlight and Beyond”[1] 中的方法并没有那么有用,因为它本质上遵循相同的方法,因此遇到了非常相似的问题。

  • silverPDF [2]:一个几乎没有文档记录的库,需要手动完成大部分布局(前一种方法至少允许我重新使用 Silverlight 的布局引擎)。到目前为止,我看不到(例如)测量段落的方法,并且唯一具有长流文本的示例使用硬编码的绝对值作为布局矩形。另外,开发方似乎不活跃。

就个人而言,我现在正在考虑采用一种完全不同的策略:简单地生成 HTML 文档。但我希望这里的社区可能对上述两种方法有所提示或知道其他好的方法。

提前致谢, ~曼尼

【问题讨论】:

    标签: silverlight pdf


    【解决方案1】:

    需要在客户端生成报告,还是让服务器生成?如果您可以在服务器上生成它,您的选择会更好。就个人而言,我认为 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 Reporting 进展顺利。但归根结底,SL4 的打印能力(或缺乏)仍然产生相当平庸的结果(rastarized 等)。不过,如果时间允许,我们很可能会尝试找到一种替代方案(或者是一种不同的格式,例如 HTML,或者在一个不同的、更强大的环境中生成它)。
    • 是的,SL4 中缺乏矢量打印功能显然将在 SL5 中得到修复,但与此同时,这是我更喜欢在服务器上生成 PDF 报告的主要原因之一(除了能够使用报告工具生成报告)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    • 1970-01-01
    相关资源
    最近更新 更多