2009-11-03 104 views
3

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

我已经考虑了一些选项,但我还没有测试任何这些。在我这样做之前,我希望得到一些关于如何完成的反馈。

  1. 使用浏览器打印功能。根据我的经验,这不能提供有用的打印,但可能通过Silverlight主机和浏览器之间的一些交互来完成它?使用WriteableBitmap。该图像可以在本地编写,但这需要用户进行交互,或者发送到服务器,在该服务器上可以生成合适的文件(例如PDF文件),然后将其发送回浏览器。不幸的是,你现在需要花费两倍的时间在网络上发送图像,并增加了服务器端的复杂性。

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

  3. 等待Silverlight 4?

有一件事我考虑的是我真棒控制可能会在最高级别ScrollViewer,但用户将要打印的控制的全部内容,而不仅仅是无论是在边界内可见ScrollViewer。我如何处理这个增加的复杂性?

+1

仅供参考,斯科特谷刚刚宣布,打印将在Silverlight 4的支持 – 2009-11-18 17:46:14

回答

1

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

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

3

在所有的严重性,我想你最好的选择是等到Silverlight 4中,如果你的客户可以等这么久。我已经看到关于SL 4支持在Twitter上进行打印的好消息,尽管它不是官方的。我会在几周后等到PDC,看看是否有任何Silverlight比特流出来支持打印。

+0

我会同意与PDC隐现其价值竟承诺一个疗程之前waitng行动。 – AnthonyWJones 2009-11-03 19:29:57

2

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

  1. 从浏览器打印。很好,如果你正在打印一张图表或其他能够在单张纸上缩放的图表。其他任何东西都是垃圾,特别是在滚动内容的地方。

  2. WriteableBitmap。我看不到客户端唯一的解决方案是可以接受的,以用户“请保存此并打印”的消息。它可以作出努力反弹服务器,但将是坏的带宽使用(带宽为进出口权?因为在一个良好的连接内网,你不会使用Silverlight?)。

  3. 发送XAML到服务器进行渲染。好不尴尬这将是WPF XAML不SL XAML,在哪里以及如何将你绑定的,为什么送XAML可言,因为服务器需要非常避让在此,为什么不能将其持有的XAML同样也需要。或者你是否想要发送纯粹的XAML和所有需要的数据? SL还需要很多管道,而SL实际上并不涉及SL。

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

第5个选项

放置在服务器上生成报告的代码,并有Silverlight应用程序通知要求(不一定发布仅仅是标准需要访问正确的数据数据集的服务器组)。根据我的经验GUI的直接打印不是特别满意,当用户真正需要的数据的一个很好的印刷形式。

其真实,有时用户只是想快速获得数据的网格一些离线访问,因为它看起来那里,然后。在这种情况下,用户经常发现导出到电子表格兼容文件比打印更好,这可能来自SL。