我有一个Silverlight 5 OOB应用程序(具有提升权限),它刚刚部署到我们的许多用户身上。 其中一些用户报告打印件空白或非常微弱。 这些打印机可以正确打印Word文档,我无法在自己的打印机上重现该问题。
所有用户都使用Windows XP SP3 32位,我正在使用Win7 64位进行开发。
之前有谁见过这个问题?或者任何可能导致这种情况的想法?
非常感谢。
非常感谢, 安德鲁
答案 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类型的应用程序中打印更稳定。