直接打印word文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;