'UInt32 System.Printing.PrintQueue.GetDpiX(System.Printing.ILegacyDevice)问题解决方法

Since the install of update KB 313xxxx we can no longer print from a WPF application. The following exception occures when System.Windows.Controls.PrintDialog.PrintDocument is called.

Source: ReachFramework
Message:  Source: Method not found: 'UInt32 System.Printing.PrintQueue.GetDpiX(System.Printing.ILegacyDevice)'.
Stack Tace:    at Microsoft.Internal.AlphaFlattener.Flattener.Convert(Primitive tree, ILegacyDevice dc, Double width, Double height, Double dpix, Double dpiy, Nullable`1 quality)
   at Microsoft.Internal.AlphaFlattener.MetroDevice0.FlushPage(ILegacyDevice sink, Double width, Double height, Nullable`1 outputQuality)
   at Microsoft.Internal.AlphaFlattener.MetroToGdiConverter.FlushPage()
   at System.Windows.Xps.Serialization.NgcSerializationManager.EndPage()
   at System.Windows.Xps.Serialization.NgcFixedPageSerializer.SerializeObject(Object serializedObject)
   at System.Windows.Xps.Serialization.NgcDocumentPageSerializer.SerializeObject(Object serializedObject)
   at System.Windows.Xps.Serialization.NgcDocumentPaginatorSerializer.SerializeObject(Object serializedObject)
   at System.Windows.Xps.Serialization.NgcSerializationManager.SaveAsXaml(Object serializedObject)
   at System.Windows.Xps.XpsDocumentWriter.SaveAsXaml(Object serializedObject, Boolean isSync)
   at System.Windows.Xps.XpsDocumentWriter.Write(DocumentPaginator documentPaginator, PrintTicket printTicket)
   at System.Windows.Controls.PrintDialog.PrintDocument(DocumentPaginator documentPaginator, String description)

Uninstalling the update resolves the issue.

Issue occurs on Windows 7, .NET 3.5/4, x86 with physical printers and not virtual ones such as Sent To OneNote or XPS. Occures on both Xerox 7380 and Intermec PF4I.

原文地址:https://www.cnblogs.com/liuliu-NoGirl/p/5505513.html