直接打印word文档

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

using using Microsoft.Office.Interop.Word;

(通过添加引用-com组件,找office的word组件

///

/// 打印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);

//开始打印

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;

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;

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

object oTrue = true;

object oFalse = false;

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

Application appWord = new Application();

//WORD程序不可见

appWord.Visible = false;

//不弹出警告框

appWord.DisplayAlerts = WdAlertLevel.wdAlertsNone;

//先保存默认的打印机

string defaultPrinter = appWord.ActivePrinter;

相关文档
最新文档