using System.Collections.Generic;
using System.Drawing.Printing;
using System.Runtime.InteropServices;
namespace XHWK.WKTool.Utils
{
class ZPrintUtils
{
private static PrintDocument fPrintDocument = new PrintDocument();
///
/// 获取本机默认打印机名称
///
///
public static string DefaultPrinter()
{
return fPrintDocument.PrinterSettings.PrinterName;
}
///
/// 获取打印机列表
///
///
public static List GetLocalPrinters()
{
List fPrinters = new List();
fPrinters.Add(DefaultPrinter()); //默认打印机始终出现在列表的第一项
foreach (string fPrinterName in PrinterSettings.InstalledPrinters)
{
if (!fPrinters.Contains(fPrinterName))
{
fPrinters.Add(fPrinterName);
}
}
return fPrinters;
}
///
/// 调用win api将指定名称的打印机设置为默认打印机
///
///
///
[DllImport("winspool.drv")]
public static extern bool SetDefaultPrinter(string Name);
///
/// 打印
///
/// 打印文件的路径
/// 打印机的名称
public static void Print(string PDFPath, string PrinterName)
{
//设置默认打印机
SetDefaultPrinter(PrinterName);
System.Diagnostics.Process p = new System.Diagnostics.Process();
//不能启动进程是否显示错误弹窗,如果文件没有打开方式会提示选择文件的打开方式
p.StartInfo.ErrorDialog = true;
//不显示调用程序窗口,但是对于某些应用无效
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
//采用操作系统自动识别的模式
p.StartInfo.UseShellExecute = true;
//要打印的文件路径
p.StartInfo.FileName = PDFPath;
//指定执行的动作,是打印,即print,打开是 open
p.StartInfo.Verb = "print";
//开始打印
p.Start();
//等待15秒
p.WaitForExit(15000);
}
}
}