Silverlight打印技术

3

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

我考虑了一些选项,但还没有测试过任何选项。在我进行测试之前,我想先获得一些反馈,看看如何完成打印。

  1. 使用浏览器的打印功能。就我的经验而言,这并不提供有用的打印输出,但也许在Silverlight主机和浏览器之间进行一些交互可以实现呢?

  2. 使用WriteableBitmap。图像可以在本地编写,但这需要用户进行交互,或者将其发送到服务器,在那里可以生成适当的文件(例如PDF文件),然后将其发送回浏览器。不幸的是,您现在需要在网络上传输两次图像,并增加服务器端的复杂性。

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

  4. 等待Silverlight 4?

我考虑过的一件事是,我的控件可能会在最高层级上有一个ScrollViewer,但用户希望打印控件的整个内容,而不仅仅是ScrollViewer边界内可见的内容。我该如何处理这种增加的复杂性?


1
FYI,Scott Gu 刚刚宣布 Silverlight 4 将支持打印功能。 - Ben McCormack
5个回答

3

说真的,如果你的客户能等那么长时间,我认为最好的选择是等到Silverlight 4。我在Twitter上看到了很多关于SL 4支持打印的热议,尽管这并不是官方消息。我建议等到几周后的PDC会议,看看是否有任何Silverlight相关的消息来支持打印。


我认为在PDC即将到来之际,值得等待并不急于采取行动。 - AnthonyWJones

2

说实话,我不会使用这些选项:

  1. 从浏览器打印。如果您要打印一个图表或其他在单张纸上缩放良好的内容,则效果很好。对于任何其他内容,特别是具有滚动内容的内容,都很烂。

  2. WriteableBitmap。我无法想象仅客户端的解决方案对用户来说是可接受的,“请保存此文件,然后打印它”消息。它可以通过与服务器反弹来使其工作,但会增加带宽使用(带宽很重要吗?因为在连接良好的内部网络中,您将不会使用Silverlight?)。

  3. 将XAML发送到服务器进行渲染。非常麻烦,它将是WPF XAML而不是SL XAML,您将在哪里以及如何进行绑定,为什么要发送XAML,因为服务器需要几乎了解这一点,所以为什么不能也保留所需的XAML。或者您是否考虑发送所有所需数据的纯XAML?仍然需要SL中实际与SL无关的大量管道。

  4. 使用Silverlight 4,可能在不久的将来这将是正确的选择(个人认为不要抱有太大希望),但现在SL4不存在。

第5个选项

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

确实,有时用户只想快速获取某些数据格的离线访问权限。在这种情况下,用户通常会发现导出到电子表格兼容文件比打印更可取,从SL可以实现。


2

该链接不再可用。 - user3340627

1

类似于第二个选项,几乎是您最好的选择,也是我目前在大多数Silverlight应用程序中看到的打印方式。

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


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接