Working with PDF printing 
Printing PDF File to Default Printer using Printer and Page Settings 
First, the document is converted into image, and then, printed on the printer.
Create an instance of the PdfViewer  class, that enables printing a PDF file to the default printer, use the BindPdf  method to open the document into it, and change necessary settings. This example uses A4 format, portrait orientation. In the PrinterSettings , first of all, the name of the printer, to which printing goes, should be set. Or else it will print to the default printer. Next, put down the required number of copies.
  
       
      .NET Core 3.1 
      // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET 
private  static  void  PrintingPDFFile () 
{ 
    // The path to the documents directory 
     var  dataDir  =  RunExamples . GetDataDir_AsposePdfFacades_Printing (); 
 
     // Create PdfViewer object 
     using  ( var  viewer  =  new  Aspose . Pdf . Facades . PdfViewer ()) 
     { 
         // Bind PDF document 
         viewer . BindPdf ( dataDir  +  "PrintDocument.pdf" ); 
 
         // Set attributes for printing 
         // Print the file with adjusted size 
         viewer . AutoResize  =  true ; 
         // Print the file with adjusted rotation 
         viewer . AutoRotate  =  true ; 
         // Do not produce the page number dialog when printing 
         viewer . PrintPageDialog  =  false ; 
 
         // Create objects for printer and page settings and PrintDocument 
         var  ps  =  new  Aspose . Pdf . Printing . PrinterSettings (); 
         var  pgs  =  new  Aspose . Pdf . Printing . PageSettings (); 
         var  prtdoc  =  new  System . Drawing . Printing . PrintDocument (); 
 
         // Set printer name 
         ps . PrinterName  =  prtdoc . PrinterSettings . PrinterName ; 
 
         // Set PageSize (if required) 
         pgs . PaperSize  =  Aspose . Pdf . Printing . PaperSizes . A4 ; 
 
         // Set PageMargins (if required) 
         pgs . Margins  =  new  Aspose . Pdf . Devices . Margins ( 0 ,  0 ,  0 ,  0 ); 
 
         // Print document using printer and page settings 
         viewer . PrintDocumentWithSettings ( pgs ,  ps ); 
     } 
 } 
 
       
      .NET 8 
      // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET 
private  static  void  PrintingPDFFile () 
{ 
    // The path to the documents directory 
     var  dataDir  =  RunExamples . GetDataDir_AsposePdfFacades_Printing (); 
 
     // Create PdfViewer object 
     using  var  viewer  =  new  Aspose . Pdf . Facades . PdfViewer (); 
 
     // Bind PDF document 
     viewer . BindPdf ( dataDir  +  "PrintDocument.pdf" ); 
 
     // Set attributes for printing 
     // Print the file with adjusted size 
     viewer . AutoResize  =  true ; 
     // Print the file with adjusted rotation 
     viewer . AutoRotate  =  true ; 
     // Do not produce the page number dialog when printing 
     viewer . PrintPageDialog  =  false ; 
 
     // Create objects for printer and page settings and PrintDocument 
     var  ps  =  new  Aspose . Pdf . Printing . PrinterSettings (); 
     var  pgs  =  new  Aspose . Pdf . Printing . PageSettings (); 
     var  prtdoc  =  new  System . Drawing . Printing . PrintDocument (); 
 
     // Set printer name 
     ps . PrinterName  =  prtdoc . PrinterSettings . PrinterName ; 
 
     // Set PageSize (if required) 
     pgs . PaperSize  =  Aspose . Pdf . Printing . PaperSizes . A4 ; 
 
     // Set PageMargins (if required) 
     pgs . Margins  =  new  Aspose . Pdf . Devices . Margins ( 0 ,  0 ,  0 ,  0 ); 
 
     // Print document using printer and page settings 
     viewer . PrintDocumentWithSettings ( pgs ,  ps ); 
 } 
 
 
In order to display a print dialog, use the following code snippet.
  
 
Print PDF to Soft Printer 
There are printers that print to a file. To use them, set the name of the virtual printer, and, analogous to the previous example, make the settings.
  
       
      .NET Core 3.1 
      // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET 
private  static  void  PrintingPDFToSoftPrinter () 
{ 
    // The path to the documents directory 
     var  dataDir  =  RunExamples . GetDataDir_AsposePdfFacades_Printing (); 
 
     // Create PdfViewer object 
     using  ( var  viewer  =  new  Aspose . Pdf . Facades . PdfViewer ()) 
     { 
         // Bind PDF document 
         viewer . BindPdf ( dataDir  +  "PrintDocument.pdf" ); 
 
         // Set attributes for printing 
         // Print the file with adjusted size 
         viewer . AutoResize  =  true ; 
         // Print the file with adjusted rotation 
         viewer . AutoRotate  =  true ; 
         // Do not produce the page number dialog when printing 
         viewer . PrintPageDialog  =  false ; 
         // Do not convert document pages to images 
         viewer . PrintAsImage  =  false ; 
 
         // Create objects for printer and page settings and PrintDocument 
         var  ps  =  new  Aspose . Pdf . Printing . PrinterSettings (); 
         var  pgs  =  new  Aspose . Pdf . Printing . PageSettings (); 
 
         // Set printer name 
         ps . PrinterName  =  "HP Universal Printing PS (v7.0.0)" ; 
         // Or set the PDF printer 
         // ps.PrinterName = "Adobe PDF"; 
 
         // Set PageSize (if required) 
         pgs . PaperSize  =  Aspose . Pdf . Printing . PaperSizes . A4 ; 
 
         // Set PageMargins (if required) 
         pgs . Margins  =  new  Aspose . Pdf . Devices . Margins ( 0 ,  0 ,  0 ,  0 ); 
 
         // Print document using printer and page settings 
         viewer . PrintDocumentWithSettings ( pgs ,  ps ); 
     } 
 } 
 
       
      .NET 8 
      // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET 
private  static  void  PrintingPDFToSoftPrinter () 
{ 
    // The path to the documents directory 
     var  dataDir  =  RunExamples . GetDataDir_AsposePdfFacades_Printing (); 
 
     // Create PdfViewer object 
     using  var  viewer  =  new  Aspose . Pdf . Facades . PdfViewer (); 
 
     // Bind PDF document 
     viewer . BindPdf ( dataDir  +  "PrintDocument.pdf" ); 
 
     // Set attributes for printing 
     // Print the file with adjusted size 
     viewer . AutoResize  =  true ; 
     // Print the file with adjusted rotation 
     viewer . AutoRotate  =  true ; 
     // Do not produce the page number dialog when printing 
     viewer . PrintPageDialog  =  false ; 
     // Do not convert document pages to images 
     viewer . PrintAsImage  =  false ; 
 
     // Create objects for printer and page settings and PrintDocument 
     var  ps  =  new  Aspose . Pdf . Printing . PrinterSettings (); 
     var  pgs  =  new  Aspose . Pdf . Printing . PageSettings (); 
 
     // Set printer name 
     ps . PrinterName  =  "HP Universal Printing PS (v7.0.0)" ; 
     // Or set the PDF printer 
     // ps.PrinterName = "Adobe PDF"; 
 
     // Set PageSize (if required) 
     pgs . PaperSize  =  Aspose . Pdf . Printing . PaperSizes . A4 ; 
 
     // Set PageMargins (if required) 
     pgs . Margins  =  new  Aspose . Pdf . Devices . Margins ( 0 ,  0 ,  0 ,  0 ); 
 
     // Print document using printer and page settings 
     viewer . PrintDocumentWithSettings ( pgs ,  ps ); 
 } 
 
 
Hiding Print Dialog 
Aspose.PDF for .NET supports hiding the print dialog. For this, use the PrintPageDialog  property.
The following code snippet shows how to hide the print dialog.
  
       
      .NET Core 3.1 
      // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET 
private  static  void  PrintingPDFHidePrintDialog () 
{ 
    // The path to the documents directory 
     var  dataDir  =  RunExamples . GetDataDir_AsposePdfFacades_Printing (); 
 
     // Create PdfViewer object 
     using  ( var  viewer  =  new  Aspose . Pdf . Facades . PdfViewer ()) 
     { 
         // Bind PDF document 
         viewer . BindPdf ( dataDir  +  "PrintDocument.pdf" ); 
 
         // Set attributes for printing 
         // Print the file with adjusted size 
         viewer . AutoResize  =  true ; 
         // Print the file with adjusted rotation 
         viewer . AutoRotate  =  true ; 
         // Do not produce the page number dialog when printing 
         viewer . PrintPageDialog  =  false ; 
 
         // Create objects for printer and page settings 
         var  ps  =  new  Aspose . Pdf . Printing . PrinterSettings (); 
         var  pgs  =  new  Aspose . Pdf . Printing . PageSettings (); 
 
         // Set XPS/PDF printer name 
         ps . PrinterName  =  "OneNote for Windows 10" ; 
 
         // Set PageSize (if required) 
         pgs . PaperSize  =  Aspose . Pdf . Printing . PaperSizes . A4 ; 
 
         // Set PageMargins (if required) 
         pgs . Margins  =  new  Aspose . Pdf . Devices . Margins ( 0 ,  0 ,  0 ,  0 ); 
 
         // Print document using printer and page settings 
         viewer . PrintDocumentWithSettings ( pgs ,  ps ); 
     } 
 } 
 
       
      .NET 8 
      // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET 
private  static  void  PrintingPDFHidePrintDialog () 
{ 
    // The path to the documents directory 
     var  dataDir  =  RunExamples . GetDataDir_AsposePdfFacades_Printing (); 
 
     // Create PdfViewer object 
     using  var  viewer  =  new  Aspose . Pdf . Facades . PdfViewer (); 
 
     // Bind PDF document 
     viewer . BindPdf ( dataDir  +  "PrintDocument.pdf" ); 
 
     // Set attributes for printing 
     // Print the file with adjusted size 
     viewer . AutoResize  =  true ; 
     // Print the file with adjusted rotation 
     viewer . AutoRotate  =  true ; 
     // Do not produce the page number dialog when printin 
     viewer . PrintPageDialog  =  false ; 
 
     // Create objects for printer and page settings 
     var  ps  =  new  Aspose . Pdf . Printing . PrinterSettings (); 
     var  pgs  =  new  Aspose . Pdf . Printing . PageSettings (); 
 
     // Set XPS/PDF printer name 
     ps . PrinterName  =  "OneNote for Windows 10" ; 
 
     // Set PageSize (if required) 
     pgs . PaperSize  =  Aspose . Pdf . Printing . PaperSizes . A4 ; 
 
     // Set PageMargins (if required) 
     pgs . Margins  =  new  Aspose . Pdf . Devices . Margins ( 0 ,  0 ,  0 ,  0 ); 
 
     // Print document using printer and page settings 
     viewer . PrintDocumentWithSettings ( pgs ,  ps ); 
 } 
 
 
Printing Color PDF to XPS File as Grayscale 
A color PDF document can be printed to an XPS printer as grayscale, using PdfViewer . In order to achieve that, set the property PdfViewer.PrintAsGrayscale  to true . The following code snippet demonstrates the usage of the PdfViewer.PrintAsGrayscale property.
  
       
      .NET Core 3.1 
      // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET 
private  static  void  PrintingPDFAsGrayscale () 
{ 
    // The path to the documents directory 
     var  dataDir  =  RunExamples . GetDataDir_AsposePdfFacades_Printing (); 
 
     // Create PdfViewer object 
     using  ( var  viewer  =  new  Aspose . Pdf . Facades . PdfViewer ()) 
     { 
         // Bind PDF document 
         viewer . BindPdf ( dataDir  +  "PrintDocument.pdf" ); 
 
         // Set attributes for printing 
         // Print the file with adjusted size 
         viewer . AutoResize  =  true ; 
         // Print the file with adjusted rotation 
         viewer . AutoRotate  =  true ; 
         // Do not produce the page number dialog when printing 
         viewer . PrintPageDialog  =  false ; 
         // Print the file as grayscale 
         viewer . PrintAsGrayscale  =  false ; 
 
         // Create objects for printer and page settings 
         var  ps  =  new  Aspose . Pdf . Printing . PrinterSettings (); 
         var  pgs  =  new  Aspose . Pdf . Printing . PageSettings (); 
 
         // Set XPS/PDF printer name 
         ps . PrinterName  =  "OneNote for Windows 10" ; 
 
         // Set PageSize (if required) 
         pgs . PaperSize  =  Aspose . Pdf . Printing . PaperSizes . A4 ; 
 
         // Set PageMargins (if required) 
         pgs . Margins  =  new  Aspose . Pdf . Devices . Margins ( 0 ,  0 ,  0 ,  0 ); 
 
         // Print document using printer and page settings 
         viewer . PrintDocumentWithSettings ( pgs ,  ps ); 
     } 
 } 
 
       
      .NET 8 
      // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET 
private  static  void  PrintingPDFAsGrayscale () 
{ 
    // The path to the documents directory 
     var  dataDir  =  RunExamples . GetDataDir_AsposePdfFacades_Printing (); 
 
     // Create PdfViewer object 
     using  var  viewer  =  new  Aspose . Pdf . Facades . PdfViewer (); 
 
     // Bind PDF document 
     viewer . BindPdf ( dataDir  +  "PrintDocument.pdf" ); 
 
     // Set attributes for printing 
     // Print the file with adjusted size 
     viewer . AutoResize  =  true ; 
     // Print the file with adjusted rotation 
     viewer . AutoRotate  =  true ; 
     // Do not produce the page number dialog when printing 
     viewer . PrintPageDialog  =  false ; 
     // Print the file as grayscale 
     viewer . PrintAsGrayscale  =  false ; 
 
     // Create objects for printer and page settings 
     var  ps  =  new  Aspose . Pdf . Printing . PrinterSettings (); 
     var  pgs  =  new  Aspose . Pdf . Printing . PageSettings (); 
 
     // Set XPS/PDF printer name 
     ps . PrinterName  =  "OneNote for Windows 10" ; 
 
     // Set PageSize (if required) 
     pgs . PaperSize  =  Aspose . Pdf . Printing . PaperSizes . A4 ; 
 
     // Set PageMargins (if required) 
     pgs . Margins  =  new  Aspose . Pdf . Devices . Margins ( 0 ,  0 ,  0 ,  0 ); 
 
     // Print document using printer and page settings 
     viewer . PrintDocumentWithSettings ( pgs ,  ps ); 
 } 
 
 
PDF to PostScript conversion 
The PdfViewer  class provides the capability to print PDF documents and with the help of this class, one can also convert PDF files to PostScript format. To convert a PDF file into PostScript, first install any PS printer and just print to file with the help of the PdfViewer.
The following code snippet shows how to print and convert a PDF to PostScript format.
  
       
      .NET Core 3.1 
      // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET 
private  static  void  PrintingPDFToPostScript () 
{ 
    // The path to the documents directory 
     var  dataDir  =  RunExamples . GetDataDir_AsposePdfFacades_Printing (); 
 
     // Create PdfViewer object 
     using  ( var  viewer  =  new  Aspose . Pdf . Facades . PdfViewer ()) 
     { 
         // Bind PDF document 
         viewer . BindPdf ( dataDir  +  "PrintDocument.pdf" ); 
 
         // Set attributes for printing 
         // Print the file with adjusted size 
         viewer . AutoResize  =  true ; 
         // Print the file with adjusted rotation 
         viewer . AutoRotate  =  true ; 
         // Do not produce the page number dialog when printing 
         viewer . PrintPageDialog  =  false ; 
         // Do not convert document pages to images 
         viewer . PrintAsImage  =  false ; 
 
         // Create objects for printer and page settings and PrintDocument 
         var  ps  =  new  Aspose . Pdf . Printing . PrinterSettings (); 
         var  pgs  =  new  Aspose . Pdf . Printing . PageSettings (); 
 
         // Set printer name 
         ps . PrinterName  =  "HP Universal Printing PS (v7.0.0)" ; 
         
         // Set output file name and PrintToFile attribute 
         ps . PrintFileName  =  dataDir  +  "PdfToPostScript_out.ps" ; 
         ps . PrintToFile  =  true ; 
 
         // Set PageSize (if required) 
         pgs . PaperSize  =  Aspose . Pdf . Printing . PaperSizes . A4 ; 
 
         // Set PageMargins (if required) 
         pgs . Margins  =  new  Aspose . Pdf . Devices . Margins ( 0 ,  0 ,  0 ,  0 ); 
 
         // Print document using printer and page settings 
         viewer . PrintDocumentWithSettings ( pgs ,  ps ); 
     } 
 } 
 
       
      .NET 8 
      // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET 
private  static  void  PrintingPDFToSoftPrinter () 
{ 
    // The path to the documents directory 
     var  dataDir  =  RunExamples . GetDataDir_AsposePdfFacades_Printing (); 
 
     // Create PdfViewer object 
     using  var  viewer  =  new  Aspose . Pdf . Facades . PdfViewer (); 
 
     // Bind PDF document 
     viewer . BindPdf ( dataDir  +  "PrintDocument.pdf" ); 
 
     // Set attributes for printing 
     // Print the file with adjusted size 
     viewer . AutoResize  =  true ; 
     // Print the file with adjusted rotation 
     viewer . AutoRotate  =  true ; 
     // Do not produce the page number dialog when printing 
     viewer . PrintPageDialog  =  false ; 
     // Do not convert document pages to images 
     viewer . PrintAsImage  =  false ; 
 
     // Create objects for printer and page settings and PrintDocument 
     var  ps  =  new  Aspose . Pdf . Printing . PrinterSettings (); 
     var  pgs  =  new  Aspose . Pdf . Printing . PageSettings (); 
 
     // Set printer name 
     ps . PrinterName  =  "HP Universal Printing PS (v7.0.0)" ; 
     
     // Set output file name and PrintToFile attribute 
     ps . PrintFileName  =  dataDir  +  "PdfToPostScript_out.ps" ; 
     ps . PrintToFile  =  true ; 
 
     // Set PageSize (if required) 
     pgs . PaperSize  =  Aspose . Pdf . Printing . PaperSizes . A4 ; 
 
     // Set PageMargins (if required) 
     pgs . Margins  =  new  Aspose . Pdf . Devices . Margins ( 0 ,  0 ,  0 ,  0 ); 
 
     // Print document using printer and page settings 
     viewer . PrintDocumentWithSettings ( pgs ,  ps ); 
 } 
 
 
Checking Print Job Status 
A PDF file can be printed to a physical printer as well as to the Microsoft XPS Document Writer, without showing a print dialog, using the PdfViewer  class. When printing large PDF files, the process might take a long time so the user might not be certain whether the printing process completed or encountered an issue. To determine the status of a printing job, use the PrintStatus  property. The following code snippet shows how to print the PDF file to an XPS file and get the printing status.
  
       
      .NET Core 3.1 
      // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET 
private  static  void  CheckingPrintJobStatus () 
{ 
    // The path to the documents directory 
     var  dataDir  =  RunExamples . GetDataDir_AsposePdfFacades_Printing (); 
 
     // Instantiate PdfViewer object 
     using  ( var  viewer  =  new  Aspose . Pdf . Facades . PdfViewer ()) 
     { 
         // Bind PDF document 
         viewer . BindPdf ( dataDir  +  "PrintDocument.pdf" ); 
 
         // Set attributes for printing 
         // Print the file with adjusted size 
         viewer . AutoResize  =  true ; 
         // Print the file with adjusted rotation 
         viewer . AutoRotate  =  true ; 
         // Do not produce the page number dialog when printing 
         viewer . PrintPageDialog  =  false ; 
         // Do not convert document pages to images 
         viewer . PrintAsImage  =  false ; 
 
         // Create Printer Settings object 
         var  ps  =  new  Aspose . Pdf . Printing . PrinterSettings (); 
         var  pgs  =  new  Aspose . Pdf . Printing . PageSettings (); 
 
         // Specify the printer name 
         ps . PrinterName  =  "Microsoft XPS Document Writer" ; 
 
         // Set output file name and PrintToFile attribute 
         ps . PrintFileName  =  dataDir  +  "CheckingPrintJobStatus_out.xps" ; 
         ps . PrintToFile  =  true ; 
 
         // Set PageSize (if required) 
         pgs . PaperSize  =  Aspose . Pdf . Printing . PaperSizes . A4 ; 
         
         // Set PageMargins (if required) 
         pgs . Margins  =  new  Aspose . Pdf . Devices . Margins ( 0 ,  0 ,  0 ,  0 ); 
         
         // Print document using printer and page settings 
         viewer . PrintDocumentWithSettings ( pgs ,  ps ); 
 
         // Check the print status 
         if  ( viewer . PrintStatus  !=  null ) 
         { 
             // An exception was thrown 
             if  ( viewer . PrintStatus  is  Exception  ex ) 
             { 
                 // Get exception message 
                 Console . WriteLine ( ex . Message ); 
             } 
         } 
         else 
         { 
             // No errors were found. Printing job has completed successfully 
             Console . WriteLine ( "Printing completed without any issue." ); 
         } 
     } 
 } 
 
       
      .NET 8 
      // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET 
private  static  void  CheckingPrintJobStatus () 
{ 
    // The path to the documents directory 
     var  dataDir  =  RunExamples . GetDataDir_AsposePdfFacades_Printing (); 
 
     // Instantiate PdfViewer object 
     using  var  viewer  =  new  Aspose . Pdf . Facades . PdfViewer (); 
 
     // Bind PDF document 
     viewer . BindPdf ( dataDir  +  "PrintDocument.pdf" ); 
 
     // Set attributes for printing 
     // Print the file with adjusted size 
     viewer . AutoResize  =  true ; 
     // Print the file with adjusted rotation 
     viewer . AutoRotate  =  true ; 
     // Do not produce the page number dialog when printing 
     viewer . PrintPageDialog  =  false ; 
     // Do not convert document pages to images 
     viewer . PrintAsImage  =  false ; 
 
     // Create Printer Settings object 
     var  ps  =  new  Aspose . Pdf . Printing . PrinterSettings (); 
     var  pgs  =  new  Aspose . Pdf . Printing . PageSettings (); 
 
     // Specify the printer name 
     ps . PrinterName  =  "Microsoft XPS Document Writer" ; 
 
     // Set output file name and PrintToFile attribute 
     ps . PrintFileName  =  dataDir  +  "CheckingPrintJobStatus_out.xps" ; 
     ps . PrintToFile  =  true ; 
 
     // Set PageSize (if required) 
     pgs . PaperSize  =  Aspose . Pdf . Printing . PaperSizes . A4 ; 
 
     // Set PageMargins (if required) 
     pgs . Margins  =  new  Aspose . Pdf . Devices . Margins ( 0 ,  0 ,  0 ,  0 ); 
 
     // Print document using printer and page settings 
     viewer . PrintDocumentWithSettings ( pgs ,  ps ); 
 
     // Check the print status 
     if  ( viewer . PrintStatus  !=  null ) 
     { 
         // An exception was thrown 
         if  ( viewer . PrintStatus  is  Exception  ex ) 
         { 
             // Get exception message 
             Console . WriteLine ( ex . Message ); 
         } 
     } 
     else 
     { 
         // No errors were found. Printing job has completed successfully 
         Console . WriteLine ( "Printing completed without any issue." ); 
     } 
 } 
 
 
Printing pages in Simplex and Duplex mode 
In a particular printing job, the pages of PDF document can either be printed in Duplex or in Simplex mode but you cannot print some pages as simplex and some pages as duplex within a single print job. However in order to accomplish the requirement, different page ranges and PrintingJobSettings object can be used. The following code snippet shows how to print some pages of PDF file in Simplex and some pages in Duplex mode.
  
       
      .NET Core 3.1 
      // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET 
struct  PrintingJobSettings 
{ 
    public  int  ToPage  {  get ;  set ;  } 
     public  int  FromPage  {  get ;  set ;  } 
     public  string  OutputFile  {  get ;  set ;  } 
     public  Aspose . Pdf . Printing . Duplex  Mode  {  get ;  set ;  } 
 } 
 private  static  void  PrintingPagesInSimplexAndDuplexMode () 
{ 
    // The path to the documents directory 
     var  dataDir  =  RunExamples . GetDataDir_AsposePdfFacades_Printing (); 
 
     int  printingJobIndex  =  0 ; 
     string  outputDir  =  dataDir ; 
     var  printingJobs  =  new  List < PrintingJobSettings >(); 
 
     // Create multiple printing jobs to print different page ranges with different duplex settings 
     var  printingJob1  =  new  PrintingJobSettings (); 
     printingJob1 . FromPage  =  1 ; 
     printingJob1 . ToPage  =  3 ; 
     printingJob1 . OutputFile  =  outputDir  +  "PrintPageRange_p1-3_out.xps" ; 
     printingJob1 . Mode  =  Aspose . Pdf . Printing . Duplex . Default ; 
 
     printingJobs . Add ( printingJob1 ); 
 
     PrintingJobSettings  printingJob2  =  new  PrintingJobSettings (); 
     printingJob2 . FromPage  =  4 ; 
     printingJob2 . ToPage  =  6 ; 
     printingJob2 . OutputFile  =  outputDir  +  "PrintPageRange_p4-6_out.xps" ; 
     printingJob2 . Mode  =  Aspose . Pdf . Printing . Duplex . Simplex ; 
 
     printingJobs . Add ( printingJob2 ); 
 
     PrintingJobSettings  printingJob3  =  new  PrintingJobSettings (); 
     printingJob3 . FromPage  =  7 ; 
     printingJob3 . ToPage  =  7 ; 
     printingJob3 . OutputFile  =  outputDir  +  "PrintPageRange_p7_out.xps" ; 
     printingJob3 . Mode  =  Aspose . Pdf . Printing . Duplex . Default ; 
 
     printingJobs . Add ( printingJob3 ); 
 
     // Create PdfViewer object 
     using  ( var  viewer  =  new  Aspose . Pdf . Facades . PdfViewer ()) 
     { 
         // Bind PDF document 
         viewer . BindPdf ( dataDir  +  "Print-PageRange.pdf" ); 
 
         // Set attributes for printing 
         // Print the file with adjusted size 
         viewer . AutoResize  =  true ; 
         // Print the file with adjusted rotation 
         viewer . AutoRotate  =  true ; 
         // Do not produce the page number dialog when printing 
         viewer . PrintPageDialog  =  false ; 
 
         // Create objects for printer and page settings 
         var  ps  =  new  Aspose . Pdf . Printing . PrinterSettings (); 
         var  pgs  =  new  Aspose . Pdf . Printing . PageSettings (); 
 
         // Set printer name 
         ps . PrinterName  =  "Microsoft XPS Document Writer" ; 
 
         // Set output file name and PrintToFile attribute 
         ps . PrintFileName  =  Path . GetFullPath ( printingJobs [ printingJobIndex ]. OutputFile ); 
         ps . PrintToFile  =  true ; 
 
         // Set parameters for the first print job 
         ps . FromPage  =  printingJobs [ printingJobIndex ]. FromPage ; 
         ps . ToPage  =  printingJobs [ printingJobIndex ]. ToPage ; 
         ps . Duplex  =  printingJobs [ printingJobIndex ]. Mode ; 
         ps . PrintRange  =  Aspose . Pdf . Printing . PrintRange . SomePages ; 
 
         // Set paper size and margins 
         pgs . PaperSize  =  Aspose . Pdf . Printing . PaperSizes . A4 ; 
         ps . DefaultPageSettings . PaperSize  =  pgs . PaperSize ; 
         pgs . Margins  =  new  Aspose . Pdf . Devices . Margins ( 0 ,  0 ,  0 ,  0 ); 
 
         // Chain other print jobs at the end of the finished job 
         viewer . EndPrint  +=  ( sender ,  args )  => 
         { 
             if  (++ printingJobIndex  <  printingJobs . Count ) 
             { 
                 // Set the next print job parameters 
                 ps . PrintFileName  =  Path . GetFullPath ( printingJobs [ printingJobIndex ]. OutputFile ); 
                 ps . FromPage  =  printingJobs [ printingJobIndex ]. FromPage ; 
                 ps . ToPage  =  printingJobs [ printingJobIndex ]. ToPage ; 
                 ps . Duplex  =  printingJobs [ printingJobIndex ]. Mode ; 
 
                 // Run the next print job 
                 viewer . PrintDocumentWithSettings ( pgs ,  ps ); 
             } 
         }; 
 
         // Run the first print job 
         viewer . PrintDocumentWithSettings ( pgs ,  ps ); 
     } 
 } 
 
       
      .NET 8 
      // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET 
struct  PrintingJobSettings 
{ 
    public  int  ToPage  {  get ;  set ;  } 
     public  int  FromPage  {  get ;  set ;  } 
     public  string  OutputFile  {  get ;  set ;  } 
     public  Aspose . Pdf . Printing . Duplex  Mode  {  get ;  set ;  } 
 } 
 private  static  void  PrintingPagesInSimplexAndDuplexMode () 
{ 
    // The path to the documents directory 
     var  dataDir  =  RunExamples . GetDataDir_AsposePdfFacades_Printing (); 
 
     int  printingJobIndex  =  0 ; 
     string  outputDir  =  dataDir ; 
     var  printingJobs  =  new  List < PrintingJobSettings >(); 
 
     // Create multiple printing jobs to print different page ranges with different duplex settings 
     var  printingJob1  =  new  PrintingJobSettings (); 
     printingJob1 . FromPage  =  1 ; 
     printingJob1 . ToPage  =  3 ; 
     printingJob1 . OutputFile  =  outputDir  +  "PrintPageRange_p1-3_out.xps" ; 
     printingJob1 . Mode  =  Aspose . Pdf . Printing . Duplex . Default ; 
 
     printingJobs . Add ( printingJob1 ); 
 
     PrintingJobSettings  printingJob2  =  new  PrintingJobSettings (); 
     printingJob2 . FromPage  =  4 ; 
     printingJob2 . ToPage  =  6 ; 
     printingJob2 . OutputFile  =  outputDir  +  "PrintPageRange_p4-6_out.xps" ; 
     printingJob2 . Mode  =  Aspose . Pdf . Printing . Duplex . Simplex ; 
 
     printingJobs . Add ( printingJob2 ); 
 
     PrintingJobSettings  printingJob3  =  new  PrintingJobSettings (); 
     printingJob3 . FromPage  =  7 ; 
     printingJob3 . ToPage  =  7 ; 
     printingJob3 . OutputFile  =  outputDir  +  "PrintPageRange_p7_out.xps" ; 
     printingJob3 . Mode  =  Aspose . Pdf . Printing . Duplex . Default ; 
 
     printingJobs . Add ( printingJob3 ); 
 
     // Create PdfViewer object 
     using  var  viewer  =  new  Aspose . Pdf . Facades . PdfViewer (); 
 
     // Bind PDF document 
     viewer . BindPdf ( dataDir  +  "Print-PageRange.pdf" ); 
 
     // Set attributes for printing 
     // Print the file with adjusted size 
     viewer . AutoResize  =  true ; 
     // Print the file with adjusted rotation 
     viewer . AutoRotate  =  true ; 
     // Do not produce the page number dialog when printing 
     viewer . PrintPageDialog  =  false ; 
 
     // Create objects for printer and page settings 
     var  ps  =  new  Aspose . Pdf . Printing . PrinterSettings (); 
     var  pgs  =  new  Aspose . Pdf . Printing . PageSettings (); 
 
     // Set printer name 
     ps . PrinterName  =  "Microsoft XPS Document Writer" ; 
 
     // Set output file name and PrintToFile attribute 
     ps . PrintFileName  =  Path . GetFullPath ( printingJobs [ printingJobIndex ]. OutputFile ); 
     ps . PrintToFile  =  true ; 
 
     // Set parameters for the first print job 
     ps . FromPage  =  printingJobs [ printingJobIndex ]. FromPage ; 
     ps . ToPage  =  printingJobs [ printingJobIndex ]. ToPage ; 
     ps . Duplex  =  printingJobs [ printingJobIndex ]. Mode ; 
     ps . PrintRange  =  Aspose . Pdf . Printing . PrintRange . SomePages ; 
 
     // Set paper size and margins 
     pgs . PaperSize  =  Aspose . Pdf . Printing . PaperSizes . A4 ; 
     ps . DefaultPageSettings . PaperSize  =  pgs . PaperSize ; 
     pgs . Margins  =  new  Aspose . Pdf . Devices . Margins ( 0 ,  0 ,  0 ,  0 ); 
 
     // Chain other print jobs at the end of the finished job 
     viewer . EndPrint  +=  ( sender ,  args )  => 
     { 
         if  (++ printingJobIndex  <  printingJobs . Count ) 
         { 
             // Set the next print job parameters 
             ps . PrintFileName  =  Path . GetFullPath ( printingJobs [ printingJobIndex ]. OutputFile ); 
             ps . FromPage  =  printingJobs [ printingJobIndex ]. FromPage ; 
             ps . ToPage  =  printingJobs [ printingJobIndex ]. ToPage ; 
             ps . Duplex  =  printingJobs [ printingJobIndex ]. Mode ; 
 
             // Run the next print job 
             viewer . PrintDocumentWithSettings ( pgs ,  ps ); 
         } 
     }; 
 
     // Run the first print job 
     viewer . PrintDocumentWithSettings ( pgs ,  ps ); 
 } 
 
 
Printing multiple PDF documents in a single print job 
Sometimes, it is necessary to print multiple related documents together as a single print job. This ensures that these documents do not get interspersed with output from other users, especially with remote network printers. Aspose.PDF supports printing any number of documents in a single print job with shared printer settings via the static PrintDocuments methods of the PdfViewer  class. The documents to be printed can be provided as file paths, document streams, or Document  objects.
  
       
      .NET Core 3.1 
      // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET 
private  static  void  PrintingMultipleDocumentsInSingleJob () 
{ 
    // The path to the documents directory 
     var  dataDir  =  RunExamples . GetDataDir_AsposePdfFacades_Printing (); 
 
     // Paths to documents to be printed 
     var  path1  =  dataDir  +  "PrintDocument.pdf" ; 
     var  path2  =  dataDir  +  "Print-PageRange.pdf" ; 
     var  path3  =  dataDir  +  "35925_1_3.xps" ; 
     
     // Set up printer and page settings 
     var  printDocument  =  new  System . Drawing . Printing . PrintDocument (); 
     Aspose . Pdf . Printing . PrinterSettings  printerSettings  =  new  Aspose . Pdf . Printing . PrinterSettings (); 
     printerSettings . PrinterName  =  printDocument . PrinterSettings . PrinterName ; 
     
     Aspose . Pdf . Printing . PageSettings  pageSettings  =  new  Aspose . Pdf . Printing . PageSettings (); 
     pageSettings . PaperSize  =  Aspose . Pdf . Printing . PaperSizes . A4 ; 
     pageSettings . Margins  =  new  Aspose . Pdf . Devices . Margins ( 0 ,  0 ,  0 ,  0 ); 
     
     // Print multiple documents in a single print job 
     Aspose . Pdf . Facades . PdfViewer . PrintDocuments ( printerSettings ,  pageSettings ,  path1 ,  path2 ,  path3 ); 
 } 
 
       
      .NET 8 
      // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET 
private  static  void  PrintingMultipleDocumentsInSingleJob () 
{ 
    // The path to the documents directory 
     var  dataDir  =  RunExamples . GetDataDir_AsposePdfFacades_Printing (); 
 
     // Paths to documents to be printed 
     var  path1  =  dataDir  +  "PrintDocument.pdf" ; 
     var  path2  =  dataDir  +  "Print-PageRange.pdf" ; 
     var  path3  =  dataDir  +  "35925_1_3.xps" ; 
     
     // Set up printer and page settings 
     var  printDocument  =  new  System . Drawing . Printing . PrintDocument (); 
     Aspose . Pdf . Printing . PrinterSettings  printerSettings  =  new  Aspose . Pdf . Printing . PrinterSettings 
     { 
         PrinterName  =  printDocument . PrinterSettings . PrinterName 
     }; 
     
     Aspose . Pdf . Printing . PageSettings  pageSettings  =  new  Aspose . Pdf . Printing . PageSettings 
     { 
         PaperSize  =  Aspose . Pdf . Printing . PaperSizes . A4 , 
         Margins  =  new  Aspose . Pdf . Devices . Margins ( 0 ,  0 ,  0 ,  0 ) 
     }; 
     
     // Print multiple documents in a single print job 
     Aspose . Pdf . Facades . PdfViewer . PrintDocuments ( printerSettings ,  pageSettings ,  path1 ,  path2 ,  path3 ); 
 }