【问题标题】:Silverlight 5 printing garbled ReportsSilverlight 5 打印乱码报告
【发布时间】:2012-04-11 21:46:19
【问题描述】:

我正在使用 C1ReportViewer 控件,并且已经在 C1 论坛上发布了一个问题,但是我想我也会在这里发布,看看是否有人遇到过类似的问题。该控件使用通用 silverlight PrintDocument() 方法。

在 Silverlight 5 中从该控件打印 Crystal Report 时,有时报表打印出乱码,这意味着不同大小的文本、锥形线条以及通常不正确的位置。它也很少打印整个报告。

我已将问题缩小到几台打印机,并且仅限于使用其 32 位驱动程序的机器。基于此,以及对 Silverlight 5 所做的更改,我假设问题与 PostScript 兼容性有关。但是,由于我们的产品是 LOB 应用程序,因此执行 PS 兼容的打印机和打印机驱动程序几乎是不可能的。

因此,如果这确实是后期脚本问题,则根据 silverlight 5 的文档,PrintDocument() 方法应该会故障返回到默认位图方法。见Am I correct in understanding that vector printing in SilverLight 5 will only work with a Postscript printer?

我对 stackoverflow 的问题是:有没有人在 Silverlight 5 中打印时遇到过类似的问题,或者有没有人成功打印 Crystal Reports/PDF?如果有人遇到这种情况,您有什么解决方案?

非常感谢,

格雷格

【问题讨论】:

    标签: silverlight printing crystal-reports silverlight-5.0 componentone


    【解决方案1】:

    我能够为此想出一个解决方案。我可以编写一些代码来强制位图打印,而不是使用内置的 C1 打印功能。

    首先我创建了一个新的 PrintDocument,并为它的 PrintPage 事件连接了一些处理程序。

    mobjPrintDocument = New PrintDocument
    RemoveHandler mobjPrintDocument.PrintPage, AddressOf Print_Report
    AddHandler mobjPrintDocument.PrintPage, AddressOf Print_Report
    

    然后我们可以在您想要打印的任何时候调用 PrintDocument 上的 PrintBitmap 函数。当用户单击“打印”按钮时,我正在执行此操作。

     Private Sub xbtnPrint_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
        mintPageIndex = 0
        mobjPrintDocument.PrintBitmap(FileName)
      End Sub
    

    现在是重要的部分。我们可以通过挂钩 PrintPage 事件来劫持目标内容(如上所述)。我可以将 e.PageVisual 设置为任何可视 xaml 元素,PrintBitmap 将处理它。在这里,我使用 GetPages 函数并循环以确保打印每一页(一个 pdfviewer 元素)。但是,您可以像我说的那样将其指向任何视觉元素。

      Private Sub Print_Report(sender As System.Object, e As PrintPageEventArgs)
        e.PageVisual = xobjReportViewer.GetPages(mintPageIndex)
        mintPageIndex += 1
        e.HasMorePages = mintPageIndex < xobjReportViewer.GetPages.Count
      End Sub
    

    e.HasMorePages 允许您强制触发此事件,直到您完成。

    希望这对某人有所帮助。借助 Silverlight 5 和 Post-Script 打印机支持,许多具有 PostScript 仿真器的打印机可能不兼容,但也不会默认为位图打印。此解决方法解决了这个问题,使 LOB 类型的应用程序中的打印更加稳定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多