2010-08-12 108 views
2

我想从我的Silverlight 4应用程序打印报告(只是文本列)。我知道的唯一方法是使用PrintDocument并将PageVisual设置为显示报告的框架元素。但是,这会导致一个非常大的打印作业(如120 MB)。这不是我的客户想要的。还有其他解决方案吗?从silverlight应用程序打印文本

回答

1

一个简单的解决方案是直接从浏览器打印网页(我认为这不是你想要的)。

我认为PrintDocument和PageVisual是如何从SL内部打印的唯一方法。

我做了一些印刷,即使有大的视觉结构,但我没有检查我的打印作业有多大,所以我不能告诉你它是否正常。

无论如何,您可以尝试不直接打印您想要打印的元素,而是制作其他一些轻量级打印件,这些打印件仅用于打印目的并填充相同的数据并打印该轻量元件。

-1

您可以将文本转换成图片,然后打印图片.. MB这将帮助你

http://www.andybeaulieu.com/Home/tabid/67/EntryID/161/Default.aspx http://www.snowball.be/Printing+In+Silverlight+3+Yes+We+ Can.aspx

+0

其实Silverlight是这样做,反正。 Silverlight 4只能在600 DPI下打印光栅图像。 – 2011-03-22 20:37:36

2

Silverlight 4的问题在于,您打印的所有内容都是以600 DPI的光栅化图像的形式生成的。这解释了您看到的大量工作量。这也是为什么Silverlight的文本与您期望的输出相比看起来非常模糊的原因。 Silverlight 5将使用Postscript vector-based printing来解决这个问题,但现在您面临的事实是,如果没有第三方解决方案,您实际上会受到开箱即用限制或使用HTML的困扰。

如果您愿意从服务器端提供的HTML中生成报告,您可能会考虑您正在做的事情,以获得最佳解决方案。在这种情况下,您至少不必担心分页等复杂性,因为它是Silverlight打印的一部分。

用于报告良好的第三方解决方案,但也许比你所需要的更多的,是使用Reporting Services加上这款产品:http://www.perpetuumsoft.com/Silverlight-Viewer-for-Reporting-Services.aspx?lang=en

+0

谢谢。我想我们会等待Silverlight 5的功能。现在我们已经实现了我们自己的PDF解决方案,将报告保存在桌面上,然后用户必须自己打开并打印它。 – 2011-03-24 06:31:32

+0

这是一个浏览器外的应用程序,或者您是否使用无窗口模式从服务器端解决方案中提取PDF? – 2011-03-24 07:37:42

+0

这是一个OOB应用程序。我们使用PDFSharp在服务器上创建PDF并将该流返回给客户端。 – 2011-03-25 13:12:31