Abfangen von PrintDialog auf den XPS-Dokumentautor
-
15-11-2019 - |
Frage
Derzeit mache ich dem Benutzer zwei Bedienelemente: Speichern und drucken.Wenn der Benutzer speichern auswählt, ist ein Bereich der WPF-Anzeige über einen XPSDocumentWriter verpackt und gesendet, und der Benutzer wird aufgefordert und empfohlen, das neue XPS-Dokument zu unterschreiben.Wenn der Benutzer den Druck auswählt, druckt ein PrintDialog.printVisual, dass derselbe Bereich einem ausgewählten Benutzer derselben Region druckt.
alles gut und gut, mit der Ausnahme, dass Microsoft XPS Document Writer eine der Optionen für Drucker ist.Gibt es eine Möglichkeit, die Benutzerauswahl des XPS-Dokumentschreibers zu verhindern oder zu feiern, und senden Sie sie an die Speichern-Methode, damit ich den Benutzer auffordern kann, das XPS-Dokument zu unterschreiben?
Lösung
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.