2

I am using PdfiumViewer in order to print a PDF file:

using (PdfDocument document = PdfDocument.Load(pdfFileName))
{
    using (PrintDocument printDocument = document.CreatePrintDocument())
    {
        printDocument.BeginPrint += PrintDocument_BeginPrint;
        printDocument.EndPrint += PrintDocument_EndPrint;
        printDocument.PrintPage += PrintDocument_PrintPage;
        printDocument.QueryPageSettings += PrintDocument_QueryPageSettings;

        printDocument.PrintController = new StandardPrintController();
        printDocument.Print();
    }
}

In my printDocument BeginPrint, EndPrint, PrintPage and QueryPageSettings events I am not doing anything, only making some logs to a file.

The PDF file is printed but the left and right margins of each page of the document are being cut off so I am trying to fit each PDF document page to the current default selected paper size in the default printer. How can I do this?

j.developer
  • 474
  • 2
  • 5
  • 15
Willy
  • 9,848
  • 22
  • 141
  • 284

1 Answers1

4

Finally, I have solved the problem by initializing the CreatePrintDocument constructor with PdfPrintMode.ShrinkToMargin:

using (PdfDocument document = PdfDocument.Load(pdfFileName))
{
    using (PrintDocument printDocument = document.CreatePrintDocument(PdfPrintMode.ShrinkToMargin))
    {
        printDocument.BeginPrint += PrintDocument_BeginPrint;
        printDocument.EndPrint += PrintDocument_EndPrint;
        printDocument.PrintPage += PrintDocument_PrintPage;
        printDocument.QueryPageSettings += PrintDocument_QueryPageSettings;

        printDocument.PrintController = new StandardPrintController();
        printDocument.Print();
    }
}
j.developer
  • 474
  • 2
  • 5
  • 15
Willy
  • 9,848
  • 22
  • 141
  • 284