Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

WPF: eine Seite in Druckvorschau anzeigen und drucken

02.03.2019 (👁415)


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