我需要使用c#应用程序中的特定打印机设置打印pdf。它要求打印机使用最佳质量的图像压缩,精细设置图案选项和600 dpi作为分辨率。
目前我尝试使用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));
}
}
答案 0 :(得分:0)
尝试使用DEVMODE而不是PrintUserParams。您可以使用windows api从c#打开打印机属性并修改/保存DEVMODE。