Перехватить PrintDialog до XPS документа
-
15-11-2019 - |
Вопрос
В настоящее время я предоставляю пользователя двумя элементами управления: сохранить и распечатать.Когда пользователь выбирает сохранение, область дисплея WPF упакована вверх и отправляется через XPSDocumentWumater, и пользователю будет предложено и побудить подписать новый документ XPS.Когда пользователь выбирает печать, a printdialog.printvisual распечатывает тот же регион для выбранного пользователя, выбранного принтера.
Все хорошо и хорошо, за исключением того, что Microsoft XPS-документ Writer является одним из вариантов для принтеров.Есть ли способ предотвратить или перехватывать пользовательский выбор пользователя XPS-документа и отправить их в метод сохранения, поэтому я могу предложить пользователю подписать документ XPS?
Решение
Disclaimer: I've never used PrintDialog
before, but it looks like something like this might work:
System.Windows.Controls.PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
PrintQueue selectedQueue = printDialog.PrintQueue;
if (selectedQueue.Name == "Microsoft XPS Document Writer")
{
// Run your XPS save & sign code
}
else
{
// Run your printDialog.PrintVisual() code
}
}
I don't really like having the printer name hard-coded (I assume it varies with language settings). Possibly there is a better property of PrintQueue
that you can use to identify this printer.