12

我有一个 Silverlight 5 OOB 应用程序(具有提升的权限),它刚刚部署到我们的一些用户。其中一些用户报告说打印出来的是空白或非常模糊。这些打印机确实可以正确打印 Word 文档,但我无法在我自己的打印机上重现该问题。

所有用户都使用 Windows XP SP3 32 位,我正在开发 Win7 64 位。

以前有人见过这个问题吗?或者任何想法可能导致这种情况?

非常感谢帮助。

非常感谢,安德鲁

4

1 回答 1

1

我应该得到解决方案可能对你有用..................................................

首先,我创建了一个新的 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 类型应用程序中的打印更加稳定。

于 2013-01-30T05:25:24.183 回答