Copied RSS Feed

WPF

Printing PDF Files in WPF—A Complete Guide

In our previous blog post, Top 10 Features of Syncfusion WPF PDF Viewer, you explored the top features of the WPF PDF Viewer. In this blog post, you will learn in-depth details about one of the most necessary features of PDF Viewer: printing PDF files. The following procedures to print a PDF document are explained in this blog:

Let’s get started.

After loading a PDF file in the PDF Viewer control, you can print it by simply clicking the print icon   in the toolbar.
It opens a print dialog similar to the one in the following screenshot and allows you to select the destination printer, page range, number or copies, orientation, print to file, and other details before printing the file.

Silent printing

Silent printing allows you to print a PDF file directly to the default printer without any print dialogs. You can simply use the Print method of PDF Viewer to perform silent printing without interruption.

PdfDocumentView pdfViewer = new PdfDocumentView();
pdfViewer.Load(@"Sample.pdf");
pdfViewer.Print();

Additionally, you can customize the number of copies, page orientation, page size, and document name to be displayed while printing, and other details through the printer settings before starting to print.

pdfViewer.PrinterSettings.Copies = 2;
pdfViewer.PrinterSettings.PageOrientation = PdfViewerPrintOrientation.Portrait;
pdfViewer.PrinterSettings.PageSize = PdfViewerPrintSize.Fit;
pdfViewer.PrinterSettings.DocumentName = "Invoice";
pdfViewer.PrinterSettings.ShowPrintStatusDialog = false;           

You can also perform silent printing by sending the PDF to a specific printer, rather than the default printer, by passing the printer name as a parameter to the Print method. The following code example shows how to silent print a file with the printer “OneNote for Windows 10”.

pdfViewer.Print("OneNote for Windows 10");

The sample for silent printing is available in this GitHub repository.

Printing from console application

Even though the WPF PDF Viewer is a UI component, it can be used in a console application to make use of the features that do not require any user interaction, such as printing, exporting PDF pages as images, and extracting text from PDF files. You can use the silent printing feature in a console application to print PDF files. A sample for that is available in this GitHub location.

Batch printing

Batch printing allows you to print multiple PDF files silently in a single step without any interruption. PDF Viewer allows you to perform batch printing of PDF files, by either selecting the files from a collection or dropping the files in a single directory and iterating the files. The following code shows how to print all the PDF files present in a directory.

PdfDocumentView pdfViewer = new PdfDocumentView();
// Get only the PDF files from a directory using search pattern.
string[] files= Directory.GetFiles("../../Data/", "*.pdf");
for(int i=0;i<files.Length;i++)
{
   pdfViewer.Load(files[i]);
   pdfViewer.Print();
   pdfViewer.Unload(true);
}

The sample for batch printing of PDF files is available in this GitHub repository.

Duplex printing

Duplex printing (also known as double-sided printing) allows you to print on both sides of the paper. It is indispensable when printing brochures, books, and so on, and saves paper. PDF Viewer can perform duplex printing if your printer has built-in duplex support. If your printer supports duplex printing, the PDF Viewer by default enables duplex printing. You can select the desired duplex setting and disable the duplex, using the Duplex property of the printer settings.

pdfViewer.PrinterSettings.Duplex = System.Drawing.Printing.Duplex.Simplex;

Windows service printing

PDF Viewer allows you to print PDF files using a Windows service application, which is ideal for long-running functionality that does not disturb other users who are working on the same computer. When the service starts, you can perform printing in the single-threaded environment by passing a delegate that represents the print method to the Thread object as shown in the following code.

protected override void OnStart(string[] args)
{
    // Set the threading model to STA.
    Thread thread = new Thread(PrintPDF);
    thread.SetApartmentState(ApartmentState.STA);
    thread.Start();
}

Define the print method as follows.

void PrintPDF()
{
     PdfDocumentView pdfViewer = new PdfDocumentView();
     // Load the PDF document to be printed.
     pdfViewer.Load(“Pass the full path of the PDF file to be printed here…”);
     // Print the PDF document silently using the printer name.
     pdfViewer.Print(“Pass your printer name here…”);
}

Note: You need to specify the printer name by passing it as a parameter in the Print method as mentioned in the previous code example. Otherwise, the service cannot detect the printer, even if the default printer is set.

The Windows Service sample for printing PDF files is available in this GitHub repository.

Conclusion

Thank you for reading this blog. I hope that you have enjoyed exploring the printing functionality of the WPF PDF Viewer. Try using our PDF Viewer in your application and share your feedback in the comment section below.

If you’re already a Syncfusion user, you can download the product setup on the downloads page. Otherwise, you can download a free, 30-day trial here.

If you have any questions on these features, please contact us through our support forumDirect-Trac, or feedback portal. We are happy to assist you!

Meet the Author

Deepak G

Deepak is a Product Manager at Syncfusion with specialized skills in XAML, MVVM, and Windows platform-based controls. In 2014, he started his career as a Software Developer and has become a technophile.