Silverlight 5无法在某些打印机上打印

And*_*inn 12 printing silverlight silverlight-5.0

我有一个Silverlight 5 OOB应用程序(具有提升权限),它刚刚部署到我们的许多用户.其中一些用户报告打印件空白或非常微弱.这些打印机可以正确打印Word文档,我无法在自己的打印机上重现该问题.

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

谁以前见过这个问题?或者任何想法可能导致这个?

非常感谢.

非常感谢,安德鲁

Jig*_*Raj 1

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

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

mobjPrintDocument = New PrintDocument
RemoveHandler mobjPrintDocument.PrintPage, AddressOf Print_Report
AddHandler mobjPrintDocument.PrintPage, AddressOf Print_Report
Run Code Online (Sandbox Code Playgroud)

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

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

现在到了重要的部分。我们可以通过挂钩 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
Run Code Online (Sandbox Code Playgroud)

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

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