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

时间:2012-05-09 12:57:37

标签: silverlight printing silverlight-5.0

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

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

之前有谁见过这个问题?或者任何可能导致这种情况的想法?

非常感谢。

非常感谢, 安德鲁

1 个答案:

答案 0 :(得分: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类型的应用程序中打印更稳定。