silverlight - 在 Silverlight 中创建报告(以 PDF 格式或将其发送到打印机)

标签 silverlight pdf

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

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

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

  • Silverlight 自己的 PrintDocument : 从技术上讲,有两个主要问题。一方面,让分页符工作并以适当的布局在其上打印 UIElements 是一种肮脏的黑客工作,并且充满了妥协;谢天谢地,这是我迄今为止设法开始工作的部分。然而,PrintDocument类总是在发送它们之前将所有视觉效果呈现为位图;如果您使用 PDF 打印机并希望仍然能够搜索/选择文本,这不是很有趣。 David Poll 在“Silverlight and Beyond”中的方法[1]并没有那么有用,因为它本质上遵循相同的方法,因此遇到了非常相似的问题。
  • 银PDF [2] :一个几乎没有文档记录的库,需要手动完成大部分布局(前一种方法至少允许我重新使用 Silverlight 的布局引擎)。到目前为止,我看不到(例如)测量段落的方法,并且唯一具有长流文本的示例使用硬编码的绝对值作为布局矩形。此外,开发方似乎不活跃。

  • 就个人而言,我现在正在考虑采用一种完全不同的策略:简单地生成 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/

    相关文章:

    iis - Silverlight 与 IIS 10.0 上的 RIA 服务导致 404 错误

    c# - 模仿WP7解锁页面动画

    c# - 如何在 Silverlight 中创建弹出对话框?

    wcf - 银光 : WCF getting error on server but localhost works fine

    c# - 在保持 "Combine files..."书签结构的同时以编程方式合并 PDF?

    node.js - ImageMagick:不使用文件的 PDF 到 PNG nodejs?

    swift - 如何提高 pdf 中的图像质量?

    silverlight - 在运行时添加 ResourceDictonary 时出现异常

    iphone - 如何在IOS中以编程方式将PDF转换为PNG

    r - 缩进而不在 RMarkdown 输出中添加项目符号点或数字到 PDF