#

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

 

 

 

 

Mobile

.