Back to Devexpress

XpfRichEditPrinter Class

wpf-devexpress-dot-xtrarichedit-dot-printing.md

latest4.0 KB
Original Source

XpfRichEditPrinter Class

Provides the functionality to implement your custom printing logic.

Namespace : DevExpress.XtraRichEdit.Printing

Assembly : DevExpress.Xpf.RichEdit.v25.2.dll

NuGet Package : DevExpress.Wpf.RichEdit

Declaration

csharp
public class XpfRichEditPrinter :
    RichEditPrinterBase
vb
Public Class XpfRichEditPrinter
    Inherits RichEditPrinterBase

Remarks

The XpfRichEditPrinter class provides two methods: Print , allowing you to print to the default printer; and PrintDialog which invokes the Print dialog.

You can create a XpfRichEditPrinter class descendant and implement you custom printing logic, as shown in the code snippet below:

Example

csharp
using System.Printing;
using System.Windows;
using System.Windows.Controls;
using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.Printing;
using System.Windows.Documents;
using System.Drawing.Printing;
    public class CustomXpfRichEditPrinter : XpfRichEditPrinter
    {
        public CustomXpfRichEditPrinter(IRichEditControl control)
            : base(control) {}

        public void PrintToMyPrinter()
        {
            PrintDialog pDialog = new PrintDialog();
            PrintQueueCollection queues = new PrintServer().GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local,
                EnumeratedPrintQueueTypes.Connections });
            System.Collections.IEnumerator localPrinterEnumerator = queues.GetEnumerator();
            PrintQueue printQueue = null;

            if (localPrinterEnumerator.MoveNext()) {
                printQueue = (PrintQueue)localPrinterEnumerator.Current;
            }

            if (printQueue != null) {
                pDialog.PrintQueue = printQueue;
                FixedDocument document = this.CreateFixedDocument();
                pDialog.PrintDocument(document.DocumentPaginator, string.Empty);
            }
        }
    }
vb
Imports System.Printing
Imports System.Windows
Imports System.Windows.Controls
Imports DevExpress.XtraRichEdit
Imports DevExpress.XtraRichEdit.Printing
Imports System.Windows.Documents
Imports System.Drawing.Printing
    Public Class CustomXpfRichEditPrinter
        Inherits XpfRichEditPrinter
        Public Sub New(ByVal control As IRichEditControl)
            MyBase.New(control)
        End Sub

        Public Sub PrintToMyPrinter()
            Dim pDialog As New PrintDialog()
            Dim enumerationFlags() As EnumeratedPrintQueueTypes = {EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections}
            Dim queues As PrintQueueCollection = New PrintServer().GetPrintQueues(enumerationFlags)
            Dim localPrinterEnumerator As System.Collections.IEnumerator = queues.GetEnumerator()
            Dim printQueue As PrintQueue = Nothing

            If localPrinterEnumerator.MoveNext() Then
                printQueue = CType(localPrinterEnumerator.Current, PrintQueue)
            End If

            If printQueue IsNot Nothing Then
                pDialog.PrintQueue = printQueue
                Dim document As FixedDocument = Me.CreateFixedDocument()
                pDialog.PrintDocument(document.DocumentPaginator, String.Empty)
            End If
        End Sub
    End Class

Inheritance

Object DevExpress.XtraRichEdit.Layout.Export.RichEditPrinterBase XpfRichEditPrinter

See Also

XpfRichEditPrinter Members

DevExpress.XtraRichEdit.Printing Namespace