C#直接打印WORD文档

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

///

/// 打印word

///

/// word文件路径

/// 指定的打印机

public void Printword(string filepath,string printername)

{

//filepath=@"d:\b.doc";

//printername = "Microsoft XPS Document Writer";

try

{

System.Diagnostics.Process p = new System.Diagnostics.Process();

//不现实调用程序窗口,但是对于某些应用无效p.StartInfo.CreateNoWindow = true; p.StartInfo.WindowStyle =

System.Diagnostics.ProcessWindowStyle.Hidden; //采用操作系统自动识别的模式

eShellExecute = true;

//要打印的文件路径

p.StartInfo.FileName = filepath;

Help help = new Help();

help.LogMessage(filepath + "---------" + printername);

//指定执行的动作,是打印,即print,打开是open p.StartInfo.Verb = "print";

//获取当前默认打印机

string defaultPrinter = GetDefaultPrinter(); //将指定的打印机设为默认打印机SetDefaultPrinter(printername);

第1/7页

//开始打印

p.Start();

//等待十秒

p.WaitForExit(10000);

//将默认打印机还原

SetDefaultPrinter(defaultPrinter);

}

catch (Exception ex)

{

help.LogMessage(filepath + "----" + printername + "-------" + ex.Message);

}

}

[DllImport("Winspool.drv", CharSet = CharSet.Auto, SetLastError = true)]

private static extern bool SetDefaultPrinter(string printerName);

[DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)]

private static extern bool GetDefaultPrinter(StringBuilder pszBuffer, ref int pcchBuffer);

///

/// 获取默认的打印机

///

///

static string GetDefaultPrinter()

{

const int ERROR_FILE_NOT_FOUND = 2;

const int ERROR_INSUFFICIENT_BUFFER = 122; int pcchBuffer = 0; 第2/7页

if (GetDefaultPrinter(null, ref pcchBuffer)) {

return null;

}

int lastWin32Error =

Marshal.GetLastWin32Error();

if (lastWin32Error == ERROR_INSUFFICIENT_BUFFER)

{

StringBuilder pszBuffer = new StringBuilder(pcchBuffer);

if (GetDefaultPrinter(pszBuffer, ref pcchBuffer))

{

return pszBuffer.ToString();

}

lastWin32Error = Marshal.GetLastWin32Error();

}

if (lastWin32Error == ERROR_FILE_NOT_FOUND) {

return null;

}

throw new

Win32Exception(Marshal.GetLastWin32Error());

}

#region

///打印页面不会闪动

public void PrintMethodOther(string filepath,string printername) {

try

{

object wordFile = filepath;

//@"d:\b.doc";

object oMissing = Missing.Value;

第3/7页

//自定义object类型的布尔值

object oTrue = true;

object oFalse = false;

object doNotSaveChanges = WdSaveOptions.wdDoNotSaveChanges; //定义WORD Application相关

Application appWord = new Application();

//WORD程序不可见

appWord.Visible = false;

相关文档
最新文档