Printing PDF Files in WPF—A Complete Guide
Tags: pdf, dotnet, csharp, productivity
Published: 2020-12-15 12:59:14

---
title: Printing PDF Files in WPF—A Complete Guide
published: true
date: 2020-12-15 10:30:24 UTC
tags: PDF, dotnet, csharp, productivity
canonical_url: https://www.syncfusion.com/blogs/post/printing-pdf-files-in-wpf-a-complete-guide.aspx
cover_image: https://www.syncfusion.com/blogs/wp-content/uploads/2020/11/Printing-PDF-Files-in-WPF%E2%80%94A-Complete-Guide-672x372.png
---

In our previous blog post, [Top 10 Features of Syncfusion WPF PDF Viewer](https://dev.to/vijays/top-10-features-of-syncfusion-wpf-pdf-viewer-5c9g-temp-slug-4530042), 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:

  - [Printing using the print dialog.](#print-pdf-with-a-click)
  - [Silent printing: printing without any notification.](#slient-printing)
  - [Printing using a console application.](#printing-from-console-application)
  - [Batch Printing.](#batch-printing)
  - [Duplex printing: printing on both sides of the paper.](#duplex-printing)
  - [Printing using a Windows service.](#windows-service-printing)

Let’s get started.

## Print PDF with a click

After loading a PDF file in the PDF Viewer control, you can print it by simply clicking the print icon ![Print button](https://www.syncfusion.com/blogs/wp-content/uploads/2020/11/Print-button.png) 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.  
 ![Print Dialog](https://www.syncfusion.com/blogs/wp-content/uploads/2020/11/Print-Dialog.png)

## 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](https://help.syncfusion.com/cr/wpf/Syncfusion.Windows.PdfViewer.PdfViewerControl.html#Syncfusion_Windows_PdfViewer_PdfViewerControl_Print().html) method of PDF Viewer to perform silent printing without interruption.

```csharp
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.

```csharp
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](https://help.syncfusion.com/cr/wpf/Syncfusion.Windows.PdfViewer.PdfViewerControl.html#Syncfusion_Windows_PdfViewer_PdfViewerControl_Print_System_String_) method. The following code example shows how to silent print a file with the printer **“OneNote for Windows 10”**.

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

The sample for silent printing is available in this [GitHub](https://github.com/syncfusion/wpf-demos/tree/master/pdfviewer) 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](https://github.com/SyncfusionExamples/WPF-PDFViewer-Examples/tree/master/Printing-Examples/Printing-From-Console-Application) 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.

```csharp
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](https://github.com/SyncfusionExamples/WPF-PDFViewer-Examples/tree/master/Printing-Examples/Batch-Printing) 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.

```csharp
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.

```csharp
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.

```csharp
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](https://github.com/SyncfusionExamples/WPF-PDFViewer-Examples/tree/master/Printing-Examples/Printing-From-Windows-Service-Application) repository.

## Conclusion

Thank you for reading this blog. I hope that you have enjoyed exploring the printing functionality of the [WPF PDF Viewer](https://www.syncfusion.com/wpf-ui-controls/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](https://www.syncfusion.com/account/downloads). Otherwise, you can download a free, 30-day trial [here](https://www.syncfusion.com/downloads/fileformats/verify).

If you have any questions on these features, please contact us through our [support forum](https://www.syncfusion.com/forums), [Direct-Trac](https://www.syncfusion.com/support/directtrac/), or [feedback portal](https://www.syncfusion.com/feedback/). We are happy to assist you!