Skip to main content

How to: Show a Print Preview Form

  • 3 minutes to read

This example demonstrates how to invoke the Print Preview form using Word Processing Document API. To replicate this example, perform the following steps.

  1. Create a RichEditDocumentServer instance in code.
  2. Specify page settings for the first section in a document using the properties of the SectionPage object accessed via Section.Page.
  3. Specify document content. In this example a simple multiplication table is inserted programmatically in a document.
  4. Create a new PrintingSystem instance for creating and printing a document.
  5. Create a PrintableComponentLink printing link with the specified printing system and assign the document server to the PrintableComponentLinkBase.Component property.
  6. Call the LinkBase.CreateDocument method to generate a report and use the PrintingSystem.PreviewFormEx property to access the Print Preview form used to display a document preview. Call the PrintPreviewFormExBase.ShowDialog method to invoke the form.

The following code snippet uses RichEditDocumentServer to create a new document, modify and print it.

using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.API.Native;

using (RichEditDocumentServer wordProcessor = new RichEditDocumentServer())
{
    // Specify default formatting
    wordProcessor.Document.DefaultParagraphProperties.Alignment = ParagraphAlignment.Center;
    // Specify page settings
    wordProcessor.Document.Sections[0].Page.Landscape = true;
    wordProcessor.Document.Sections[0].Page.Height = DevExpress.Office.Utils.Units.InchesToDocumentsF(10.0f);
    wordProcessor.Document.Sections[0].Page.Width = DevExpress.Office.Utils.Units.InchesToDocumentsF(4.5f);
    // Add document content
    wordProcessor.Document.AppendText("This content is created programmatically\n");
    wordProcessor.Document.Paragraphs.Append();

    // Create a table
    Table _table = wordProcessor.Document.Tables.Create(wordProcessor.Document.Selection.Start, 8, 8, AutoFitBehaviorType.FixedColumnWidth);
    _table.BeginUpdate();
    _table.Borders.InsideHorizontalBorder.LineThickness = 1;
    _table.Borders.InsideHorizontalBorder.LineStyle = BorderLineStyle.Double;
    _table.Borders.InsideVerticalBorder.LineThickness = 1;
    _table.Borders.InsideVerticalBorder.LineStyle = BorderLineStyle.Double;
    _table.TableAlignment = TableRowAlignment.Center;

    _table.ForEachCell((cell, rowIndex, columnIndex) =>
    {
        wordProcessor.Document.InsertText(cell.Range.Start, String.Format("{0}*{1} is {2}",
            rowIndex + 2, columnIndex + 2, (rowIndex + 2) * (columnIndex + 2)));
    });
    _table.EndUpdate();

    // Print the document
        PrinterSettings printerSettings = new PrinterSettings();

        // Set the document pages to print:
        printerSettings.FromPage = 2;
        printerSettings.ToPage = 3;

        // Specify the number of copies:
        printerSettings.Copies = 2;

        // Print the document: 
        wordProcessor.Print(printerSettings);
}

The result is illustrated below.

PrintPreviewDialog_Example