Вопрос

В настоящее время я предоставляю пользователя двумя элементами управления: сохранить и распечатать.Когда пользователь выбирает сохранение, область дисплея 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top