如何在c#应用程序中使用特定打印设置进行打印作业?

时间:2016-08-22 11:07:31

标签: c# printing

我需要使用c#应用程序中的特定打印机设置打印pdf。它要求打印机使用最佳质量的图像压缩,精细设置图案选项和600 dpi作为分辨率。

Printer Settings

目前我尝试使用PrintParams设置这些值,但结果与使用打印机设置GUI手动设置值时的结果不同。

知道如何设置这些值吗?

using (Document doc = new Document(fi.FullName))
                {
                    if (doc != null)
                    {
                        Console.WriteLine("created print document object with given pdf");
                    }

                    using (PrintUserParams userParams = new PrintUserParams())
                    {
                        if (userParams != null)
                        {
                            Console.WriteLine("created user parameters for printing");
                        }


                        userParams.PrintParams.BinaryOK = false;
                        userParams.StartPage = 0;
                        userParams.EndPage = doc.NumPages;
                        Console.WriteLine(string.Format("document contains {0} pages", doc.NumPages));

                        userParams.NCopies = 1;
                        userParams.ShrinkToFit = false;
                        userParams.PrintParams.ShrinkToFit = false;
                        userParams.PrintParams.ExpandToFit = false;                           
                        userParams.DeviceName = printerName;
                        userParams.PrintParams.BitmapResolution = 600;
                        userParams.PrintParams.OptimizeForSpeed = false;
                        userParams.PrintParams.FlattenInfoExternalDPI = 600;
                        userParams.PrintParams.GradientResolution = 600;
                        userParams.PrintParams.UseFullResolutionJP2KData = false;


                        doc.Print(userParams, null);

                        Console.WriteLine(string.Format("document {0} has been sent to printer {1}", fi.FullName, printerName));
                    }                           
                }

1 个答案:

答案 0 :(得分:0)

尝试使用DEVMODE而不是PrintUserParams。您可以使用windows api从c#打开打印机属性并修改/保存DEVMODE。