Silverlight打印

时间:2009-11-03 19:14:38

标签: silverlight silverlight-3.0 printing

我在Silverlight 3中打印的选项有哪些?假设我有这个很棒的Silverlight应用程序/控件,可以创建一些数据的图形显示。现在用户想要打印它。

我考虑过几个选项,但我还没有测试过这些选项。在我这样做之前,我想得到一些关于如何做到的反馈。

  1. 使用浏览器打印功能。根据我的经验,这不提供有用的打印,但也许Silverlight主机和浏览器之间可以进行一些交互吗?

  2. 使用WriteableBitmap。图像可以在本地写入,但这需要来自用户的交互,或者发送到服务器,在服务器中可以生成合适的文件(例如PDF文件),然后将其发送回浏览器。不幸的是,您现在得到了在网络上发送两次图像的开销,并增加了服务器端的复杂性。

  3. 将XAML发送回服务器,然后在服务器上运行的WPF应用程序中呈现该服务器。结果是发回客户端。我不确定这是否可行,但是如果它是网络开销小于选项2.不幸的是,服务器端的复杂性甚至更高。

  4. 等待Silverlight 4?

  5. 我考虑过的一件事是我的精彩控件可能会在最高级别有一个ScrollViewer,但是用户会想要打印控件的整个内容,而不仅仅是在界面范围内可见的内容。 ScrollViewer。我该如何处理这种增加的复杂性?

5 个答案:

答案 0 :(得分:3)

严肃地说,我认为你的最佳选择是等到Silverlight 4,如果你的客户可以等待那么久。我已经看到了关于SL 4在Twitter上支持打印的一些嗡嗡声,尽管它不是正式的。我会在几周后等到PDC,看看是否有任何Silverlight位用于支持打印。

答案 1 :(得分:2)

TBH我不会使用任何这些选项: -

  1. 从浏览器打印。如果您正在打印,请说明图表或其他可在一张纸上很好地缩放的图表。垃圾还有其他任何东西,特别是滚动内容的地方。

  2. WriteableBitmap。我看不到用户可以接受的客户端唯一解决方案“请保存并打印”消息。可以使它从服务器弹出工作但对带宽使用不利(带宽是导入的吗?因为在连接良好的内部网中你不会使用Silverlight?)。

  3. 将XAML发送到服务器进行渲染。真的很尴尬的是WPF XAML而不是SL XAML,你在哪里以及如何进行绑定,为什么要发送XAML,因为服务器需要在这方面非常了解所以为什么它不能同时保持XAML 。或者您是否正在考虑发送纯XAML以及所需的所有数据? SL中还需要很多与SL无关的管道。

  4. 使用Silverlight 4,它可能在不远的将来这将是正确的明智选择(个人我不会屏住呼吸)但是现在SL4不存在。

  5. 第五个选项

    将报告生成代码放在服务器上,让Silverlight应用程序通知服务器所需的数据集(不一定只发布访问正确集合所需的标准数据)。根据我的经验,当用户真正需要良好的打印形式的数据时,GUI的直接打印并不是特别令人满意。

    确实有时用户只是希望快速获得对数据网格的一些离线访问,因为它在那里看起来。在这种情况下,用户经常会找到一个导出到电子表格兼容的文件,这种文件优于打印,这可以从SL。

答案 2 :(得分:2)

查看SmartPrint for Silverlight 3:http://www.smartwebcontrols.com/SmartPrintDetails.aspx

答案 3 :(得分:1)

类似于第二名的东西几乎是你最好的选择,也是我迄今为止在大多数Silverlight应用程序中所做的打印工作。

您可以让应用程序发送内容以便打印回Web服务器(即新的处理程序或查询字符串参数到打印页面)并弹出另一页以供用户打印Web内容,或者您​​可以允许用户下载文件并打印出来。

答案 4 :(得分:1)

Silverlight 3不支持打印。

如果你可以等待Silverlight 4,他们已经把它作为“高优先级”

如果不使用Writeablebitmap:http://www.andybeaulieu.com/Home/tabid/67/EntryID/161/Default.aspx