Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using System.Drawing.Printing.PrintDocument in WPF

Tags:

c#

printing

wpf

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.

like image 790
Jiří Tomek Avatar asked Nov 15 '22 14:11

Jiří Tomek


1 Answers

I found an answer. You have to set UseDialogEx dialog property to true.

like image 199
Jiří Tomek Avatar answered Nov 17 '22 22:11

Jiří Tomek