5 Stimmen

Verwendung von System.Drawing.Printing.PrintDocument in WPF

Ich habe eine WPF-Anwendung und ich verwende externe Bibliothek für die Erzeugung von Dokumenten. Diese Bibliothek gibt das Dokument als System.Drawing.Printing.PrintDocument zurück. Wie kann ich dieses Dokument in WPF drucken? Ich kann die Methode Print() direkt verwenden, aber ich muss dem Benutzer die Möglichkeit geben, den Drucker und die Einstellungen auszuwählen. Wenn ich den WPF-Dialog PrintDocument verwende, kann ich mein Dokument nicht wie in WinForms dialog.Document darauf einstellen. Gibt es eine Möglichkeit, alte PrintDocument in einige WPF freundliche Form zu konvertieren?

WinForms Weise:

// 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-Weise:

System.Windows.Controls.PrintDialog dialog = new System.Windows.Controls.PrintDialog();
if (dialog.ShowDialog() == true)
{
    // how to print old PrintDocument???
    dialog.PrintDocument(...);
}

Ich habe auch versucht, WinForms-Dialog in WPF zu öffnen, aber es ist nicht möglich. Der Dialog wird einfach nicht angezeigt.

Danke für jede Hilfe.

2voto

Jiří Tomek Punkte 87

Ich habe eine Antwort gefunden. Sie müssen einstellen UseDialogEx Dialog-Eigenschaft zu true .

-1voto

Ayush Punkte 1
MessageBox.Show(printDialog1.PrinterSettings.PrinterName);
printDialog1.PrinterSettings.PrintFileName = "A.txt"; 
MessageBox.Show(printDialog1.PrinterSettings.PrintFileName);   

printDialog1.ShowDialog();
printDocument1.DocumentName = "A.txt";
if (printDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    printDocument1.Print();
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X