@Mitsobar
public static void PrintingPDFFile()
{
// Create PdfViewer object
PdfViewer viewer = new PdfViewer();
// Open input PDF file
viewer.BindPdf(_dataDir + "sample.pdf");
// Set attributes for printing
viewer.AutoResize = true; // Print the file with adjusted size
viewer.AutoRotate = true; // Print the file with adjusted rotation
viewer.PrintPageDialog = false; // Do not produce the page number dialog when printing
// Create objects for printer and page settings and PrintDocument
Aspose.Pdf.Printing.PrinterSettings ps = new Aspose.Pdf.Printing.PrinterSettings();
Aspose.Pdf.Printing.PageSettings pgs = new Aspose.Pdf.Printing.PageSettings();
System.Drawing.Printing.PrintDocument prtdoc = new System.Drawing.Printing.PrintDocument();
// Set printer name
ps.PrinterName = prtdoc.PrinterSettings.PrinterName;
// Set PageSize (if required)
pgs.PaperSize = new Aspose.Pdf.Printing.PaperSize("A4", 827, 1169);
// 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);
// Close the PDF file after printing
viewer.Close();
}
public static void PrintingPDFDisplayPrintDialog()
{
// Create PdfViewer object
PdfViewer viewer = new PdfViewer();
// Open input PDF file
viewer.BindPdf(_dataDir + "sample.pdf");
// Set attributes for printing
viewer.AutoResize = true; // Print the file with adjusted size
viewer.AutoRotate = true; // Print the file with adjusted rotation
// Create objects for printer and page settings and PrintDocument
Aspose.Pdf.Printing.PageSettings pgs = new Aspose.Pdf.Printing.PageSettings
{
// Set PageSize (if required)
PaperSize = new Aspose.Pdf.Printing.PaperSize("A4", 827, 1169),
// Set PageMargins (if required)
Margins = new Aspose.Pdf.Devices.Margins(0, 0, 0, 0)
};
System.Windows.Forms.PrintDialog printDialog = new System.Windows.Forms.PrintDialog();
if (printDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
// Document printing code goes here
// Print document using printer and page settings
Aspose.Pdf.Printing.PrinterSettings ps = printDialog.PrinterSettings;
viewer.PrintDocumentWithSettings(pgs, ps);
}
// Close the PDF file after priting
viewer.Close();
}
Note: PrintDialog isn’t available in the NET Core Version 3.1 and later. Can it be invoked from Application.Current.Dispatcher.CurrentThread ? Check this.
public static void PrintingPDFToSoftPrinter()
{
// Create PdfViewer object
PdfViewer viewer = new PdfViewer();
// Open input PDF file
viewer.BindPdf(_dataDir + "sample.pdf");
// Set attributes for printing
viewer.AutoResize = true; // Print the file with adjusted size
viewer.AutoRotate = true; // Print the file with adjusted rotation
viewer.PrintPageDialog = false; // Do not produce the page number dialog when printing
viewer.PrintAsImage = false;
// Create objects for printer and page settings and PrintDocument
Aspose.Pdf.Printing.PrinterSettings ps = new Aspose.Pdf.Printing.PrinterSettings();
Aspose.Pdf.Printing.PageSettings 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 = new Aspose.Pdf.Printing.PaperSize("A4", 827, 1169);
// 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);
// Close the PDF file after priting
viewer.Close();
}
public static void PrintingPDFHidePrintDialog()
{
// Create PdfViewer object
PdfViewer viewer = new PdfViewer();
// Open input PDF file
viewer.BindPdf(_dataDir + "sample.pdf");
// Set attributes for printing
viewer.AutoResize = true; // Print the file with adjusted size
viewer.AutoRotate = true; // Print the file with adjusted rotation
viewer.PrintPageDialog = false; // Do not produce the page number dialog when printing
// Create objects for printer and page settings and PrintDocument
Aspose.Pdf.Printing.PrinterSettings ps = new Aspose.Pdf.Printing.PrinterSettings();
Aspose.Pdf.Printing.PageSettings pgs = new Aspose.Pdf.Printing.PageSettings();
// Set XPS/PDF printer name
ps.PrinterName = "OneNote for Windows 10";
// Set PageSize (if required)
pgs.PaperSize = new Aspose.Pdf.Printing.PaperSize("A4", 827, 1169);
// 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);
// Close the PDF file after priting
viewer.Close();
}
public static void PrintingPDFasGrayscale()
{
// Create PdfViewer object
PdfViewer viewer = new PdfViewer();
// Open input PDF file
viewer.BindPdf(_dataDir + "sample.pdf");
// Set attributes for printing
viewer.AutoResize = true; // Print the file with adjusted size
viewer.AutoRotate = true; // Print the file with adjusted rotation
viewer.PrintPageDialog = false; // Do not produce the page number dialog when printing
viewer.PrintAsGrayscale = false;
// Create objects for printer and page settings and PrintDocument
Aspose.Pdf.Printing.PrinterSettings ps = new Aspose.Pdf.Printing.PrinterSettings();
Aspose.Pdf.Printing.PageSettings pgs = new Aspose.Pdf.Printing.PageSettings();
// Set XPS/PDF printer name
ps.PrinterName = "OneNote for Windows 10";
// Set PageSize (if required)
pgs.PaperSize = new Aspose.Pdf.Printing.PaperSize("A4", 827, 1169);
// 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);
// Close the PDF file after priting
viewer.Close();
}
public static void CheckingPrintJobStatus()
{
// Create PdfViewer object
PdfViewer viewer = new PdfViewer();
// Open input PDF file
viewer.BindPdf(_dataDir + "sample1.pdf");
// Set attributes for printing
viewer.AutoResize = true; // Print the file with adjusted size
viewer.AutoRotate = true; // Print the file with adjusted rotation
viewer.PrintPageDialog = false; // Do not produce the page number dialog when printing
viewer.PrintAsImage = false;
// Create objects for printer and page settings and PrintDocument
Aspose.Pdf.Printing.PrinterSettings ps = new Aspose.Pdf.Printing.PrinterSettings();
Aspose.Pdf.Printing.PageSettings pgs = new Aspose.Pdf.Printing.PageSettings();
// Set XPS/PDF 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 = new Aspose.Pdf.Printing.PaperSize("A4", 827, 1169);
// 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 && viewer.PrintStatus is Exception ex)
{
Console.WriteLine(ex.Message);
}
else
{
// No errors were found. Printing job has been completed successfully
Console.WriteLine("Printing completed without any issue..");
}
// Close the PDF file after printing
viewer.Close();
}
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; }
}
public static void PrintingPagesInSimplexAndDuplexMode()
{
int printingJobIndex = 0;
string inPdf = _dataDir + "sample-8page.pdf";
string output = _dataDir;
IList<PrintingJobSettings> printingJobs = new List<PrintingJobSettings>();
PrintingJobSettings printingJob1 = new PrintingJobSettings
{
FromPage = 1,
ToPage = 3,
OutputFile = output + "sample_1_3.xps",
Mode = Aspose.Pdf.Printing.Duplex.Default
};
printingJobs.Add(printingJob1);
PrintingJobSettings printingJob2 = new PrintingJobSettings
{
FromPage = 4,
ToPage = 6,
OutputFile = output + "sample_4_6.xps",
Mode = Aspose.Pdf.Printing.Duplex.Simplex
};
printingJobs.Add(printingJob2);
PrintingJobSettings printingJob3 = new PrintingJobSettings
{
FromPage = 7,
ToPage = 7,
OutputFile = output + "sample_7.xps",
Mode = Aspose.Pdf.Printing.Duplex.Default
};
printingJobs.Add(printingJob3);
PdfViewer viewer = new PdfViewer();
viewer.BindPdf(inPdf);
viewer.AutoResize = true;
viewer.AutoRotate = true;
viewer.PrintPageDialog = false;
Aspose.Pdf.Printing.PrinterSettings ps = new Aspose.Pdf.Printing.PrinterSettings();
Aspose.Pdf.Printing.PageSettings pgs = new Aspose.Pdf.Printing.PageSettings();
ps.PrinterName = "Microsoft XPS Document Writer";
ps.PrintFileName = System.IO.Path.GetFullPath(printingJobs[printingJobIndex].OutputFile);
ps.PrintToFile = true;
ps.FromPage = printingJobs[printingJobIndex].FromPage;
ps.ToPage = printingJobs[printingJobIndex].ToPage;
ps.Duplex = printingJobs[printingJobIndex].Mode;
ps.PrintRange = Aspose.Pdf.Printing.PrintRange.SomePages;
pgs.PaperSize = new Aspose.Pdf.Printing.PaperSize("A4", 827, 1169);
ps.DefaultPageSettings.PaperSize = pgs.PaperSize;
pgs.Margins = new Aspose.Pdf.Devices.Margins(0, 0, 0, 0);
viewer.EndPrint += (sender, args) =>
{
if (++printingJobIndex < printingJobs.Count)
{
ps.PrintFileName = System.IO.Path.GetFullPath(printingJobs[printingJobIndex].OutputFile);
ps.FromPage = printingJobs[printingJobIndex].FromPage;
ps.ToPage = printingJobs[printingJobIndex].ToPage;
ps.Duplex = printingJobs[printingJobIndex].Mode;
viewer.PrintDocumentWithSettings(pgs, ps);
}
};
viewer.PrintDocumentWithSettings(pgs, ps);
}
Updating the page Working with PDF printing - Facades|Aspose.PDF for .NET is schedueled for the near future.
Samples of printing under Linux can be found there: PdfViewer.CustomPrint | Aspose.PDF for .NET API Reference
Beginning with the library version 23.10 the Aspose.Pdf.Drawing library contains the PdfViewer class and all printing-related APIs as well.
In Windows environments it relies on the same System.Drawing.Printing APIs, and may be used the same way as the one provided in the Aspose.Pdf library.
And in non-Windows environments the System.Drawing.Printing APIs aren’t available, and the customer is required to provide their own print handlers (examples are given at PdfViewer.CustomPrint | Aspose.PDF for .NET API Reference ).
Please note that for now the printing quality on Windows with Aspose.Pdf.Drawing may be somewhat lower than with Aspose.Pdf (especially for textual parts), and we recommend to print in higher resolutions. We continue working on the printing subsystem overhaul that will address this and other issues.