Using System.Drawing.Printing.PrintDocument in WPF
13,591
I found an answer. You have to set UseDialogEx
dialog property to true
.
Author by
Jiří Tomek
Updated on June 12, 2022Comments
-
Jiří Tomek about 2 years
I have a WPF application and I use external library for generating documents. This library returns document as System.Drawing.Printing.PrintDocument. How can I print this document in WPF? I can use Print() method directly, but I need to allow user to select printer and settings. If I use WPF PrintDocument dialog, I can't set my document to it as in WinForms dialog.Document. Is there a way to convert old PrintDocument to some WPF friendly form?
WinForms way:
// get document for printing PrintDocument document = exporter.GetPrintDocument(); System.Windows.Forms.PrintDialog dialog = new System.Windows.Forms.PrintDialog(); dialog.Document = document; if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { document.Print(); }
WPF way:
System.Windows.Controls.PrintDialog dialog = new System.Windows.Controls.PrintDialog(); if (dialog.ShowDialog() == true) { // how to print old PrintDocument??? dialog.PrintDocument(...); }
I also tried to open WinForms dialog in WPF but it is not possible. Dialog is just not shown.
Thanks for any help.
-
theycallmemorty almost 9 yearsThis person is referring to using a WinForms PrintDialog and setting the UseDialogEx so that it will work in WPF.