Using System.Drawing.Printing.PrintDocument in WPF

13,591

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

Share:
13,591
Jiří Tomek
Author by

Jiří Tomek

Updated on June 12, 2022

Comments

  • Jiří Tomek
    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
    theycallmemorty almost 9 years
    This person is referring to using a WinForms PrintDialog and setting the UseDialogEx so that it will work in WPF.