WPF: eine Seite in Druckvorschau anzeigen und drucken
Wie druckt man in WPF eine WPF Seite oder Control-Element in
einer Druckvorschau aus?
Unter Microsoft Windows WPF gibt es keine richtige Lösung um
eine Seite in der Druckvorschau anzuzeigen oder zu drucken.
Hier ist eine Lösung, mit welcher man WPF Controls, Windows
oder Pages in einer Druckvorschau anzeigen kann und drucken kann.
Die Lösung funktioniert über eine Ausgabe des xpsDocuments,
einer festen Pixel orientierten Druckausgabe.
Anschliessend wird die Seite mit einem Documentpreviewer
angezeigt.
DruckVorschau einer WPF Anwendung:
Der folgende Code erstellt eine Druckvorschau
private void BtnPrint_Click(object sender, RoutedEventArgs e)
{
Print_WPF_Preview(Grid_Plan);
}
public void Print_WPF_Preview(FrameworkElement wpf_Element)
{
//------------< WPF_Print_current_Window >------------
//--< create xps document >--
XpsDocument doc = new XpsDocument("print_previw.xps", FileAccess.ReadWrite);
XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc);
SerializerWriterCollator preview_Document = writer.CreateVisualsCollator();
preview_Document.BeginBatchWrite();
preview_Document.Write(wpf_Element); //*this or wpf xaml control
preview_Document.EndBatchWrite();
//--</ create xps document >--
//var doc2 = new XpsDocument("Druckausgabe.xps", FileAccess.Read);
FixedDocumentSequence preview = doc.GetFixedDocumentSequence();
var window = new Window();
window.Content = new DocumentViewer { Document = preview };
window.ShowDialog();
doc.Close();
//------------</ WPF_Print_current_Window >------------
}
|
Zur WPF seite muss man im Using Bereich die Verweise ergänzen:
using System.Windows.Documents;
using System.Windows.Documents.Serialization;
using System.Windows.Xps;
using System.Windows.Xps.Packaging;
|
Über Referenzes muss man eine neue Referenz setzen zu
Microsoft
Printing
Microsoft Reachframework
|
Fehler:
The type or namespace name 'Packaging' does not
exist in the namespace 'System.Windows.Xps' (are you missing an assembly
reference?)
|
Referenz System.Printing
Und Referenz: Reachframework