How to print a document using PrintDialog in C#

23,319

Solution 1

You need to handle the PrintPage event to actually provide the contents; MSDN has a full example. The DocumentName is purely something to show to the user - it is not the path of an existing file to magically print.

For printing an existing PDF, maybe look at this question

Solution 2

do this :

public static void PrintToASpecificPrinter()
        {     
                using (PrintDialog printDialog=new PrintDialog ())
                {
                printDialog.AllowSomePages = true;
                printDialog.AllowSelection = true;
                if (printDialog.ShowDialog() == DialogResult.OK)
                {
                    var StartInfo = new ProcessStartInfo();
                    StartInfo.CreateNoWindow = true;
                    StartInfo.UseShellExecute = true;
                    StartInfo.Verb = "printTo";
                    StartInfo.Arguments = "\"" + printDialog.PrinterSettings.PrinterName + "\"";
                    StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                    StartInfo.FileName = fileName;

                    Process.Start(StartInfo);
                }
                    
                }
                

        }
Share:
23,319
Thomas Anderson
Author by

Thomas Anderson

Updated on July 10, 2022

Comments

  • Thomas Anderson
    Thomas Anderson almost 2 years

    Here is my Sample code . But its printing an Empty page

                printDocument1.DocumentName = "C:\a.pbf";// PrintDocument printDocument1
                printDialog1.Document = printDocument1;
                printDialog1.AllowPrintToFile = true;
                printDialog1.AllowSelection = true;
                printDialog1.AllowSomePages = true;
                printDialog1.PrintToFile = true;
                if (printDialog1.ShowDialog() == DialogResult.OK)
                    printDocument1.Print();
    

    Whats wrong with this?. Please help me