Использование System.Drawing.Printing.PrintDocument в WPF - PullRequest
4 голосов
/ 01 ноября 2009

У меня есть приложение WPF, и я использую внешнюю библиотеку для генерации документов. Эта библиотека возвращает документ как System.Drawing.Printing.PrintDocument. Как я могу распечатать этот документ в WPF? Я могу использовать метод Print () напрямую, но мне нужно разрешить пользователю выбирать принтер и настройки. Если я использую диалоговое окно WPF PrintDocument, я не могу установить для него свой документ, как в WinForms dialog.Document. Есть ли способ конвертировать старый PrintDocument в дружественную WPF форму?

Способ WinForms:

// 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 путь:

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

Я также пытался открыть диалоговое окно WinForms в WPF, но это невозможно. Диалог просто не отображается.

Спасибо за любую помощь.

Ответы [ 2 ]

2 голосов
/ 18 декабря 2009

Я нашел ответ.Вы должны установить UseDialogEx свойство диалога на true.

0 голосов
/ 17 декабря 2009
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();
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...