我有一个Silverlight 5 OOB应用程序(具有提升的权限),刚刚部署到我们的许多用户。其中一些用户报告说,打印出来的是空白或非常微弱的。 这些打印机可以正确打印Word文档,我无法在自己的打印机上重现问题。Silverlight 5不在某些打印机上打印
所有用户都在Windows XP SP3 32位,我正在开发Win7 64位。
以前有人看过这个问题吗?或者有什么想法可能导致这种情况?
非常感谢。
非常感谢, 安德鲁
我有一个Silverlight 5 OOB应用程序(具有提升的权限),刚刚部署到我们的许多用户。其中一些用户报告说,打印出来的是空白或非常微弱的。 这些打印机可以正确打印Word文档,我无法在自己的打印机上重现问题。Silverlight 5不在某些打印机上打印
所有用户都在Windows XP SP3 32位,我正在开发Win7 64位。
以前有人看过这个问题吗?或者有什么想法可能导致这种情况?
非常感谢。
非常感谢, 安德鲁
我应该得到的解决方案可能是有用的给你............................
首先,我创建了一个新的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类型应用程序中的打印更稳定一些。
什么是您的报表引擎?有没有第三方Telerik,Devart等关于预览是好的?我们还没有面对,但感谢你的分享。 –
正在打印的页面具有标准控件。我们认为这是打印机驱动程序问题。 –
那么当你打印到XPS打印机或虚拟PDF打印机时如何呢?如果它们没问题,这可能是一个驱动程序问题。 –