遍历打印文件夹中的word文档

今天帮同事写了一个打印文档的Demo程序,采用了异步方式,上代码

代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop.Word;
using System.IO;

namespace Printer
{
    
class Program
    {
        
private static string dirInfo = System.Configuration.ConfigurationSettings.AppSettings["path"].ToString();
        
public delegate void printer1(ref Microsoft.Office.Interop.Word.Application app, ref Microsoft.Office.Interop.Word.Document doc, ref object missing, FileInfo file);
        
static void Main(string[] args)
        {
            Microsoft.Office.Interop.Word.Application app 
= null;
            Microsoft.Office.Interop.Word.Document doc 
= null;
            
object missing = System.Reflection.Missing.Value;
            
try
            {
                DirectoryInfo Dir 
= new DirectoryInfo(dirInfo);
                Console.WriteLine(
"开始了遍历文件夹");
                
foreach (var file in Dir.GetFiles ())     //查找子目录   
                {
                    file.Extension.ToString();
                    printer1 p;
                    
if (file.Extension.ToString().ToLower() == ".docx" || file.Extension.ToString().ToLower() == ".doc")
                    {
                        Console.WriteLine(
"开始打印文件"+file.FullName);
                        p 
= new printer1(Printer);
                        IAsyncResult ar 
= p.BeginInvoke(ref app, ref doc, ref missing, file, Finish, file);
                        
                        
//p(ref app, ref doc, ref missing, file);
                    }
                }

                

            }
            
catch (Exception exp)
            {
                Console.WriteLine(exp.Message);
            }

            
//销毁word进程
            finally
            {
                
object saveChange = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
                
if (doc != null)
                    doc.Close(
ref saveChange, ref missing, ref missing);

                
if (app != null)
                    app.Quit(
ref missing, ref missing, ref missing);
            }

            Console.Read();
        }

        
static void Finish(IAsyncResult ir)
        {
            FileInfo file 
= (FileInfo)ir.AsyncState;

            Console.WriteLine(file.FullName 
+ "打印完成");
        }

        
private static void Printer(ref Microsoft.Office.Interop.Word.Application app, ref Microsoft.Office.Interop.Word.Document doc, ref object missing, FileInfo file)
        {
            
try
            {
                
object templateFile = file.FullName;
                app 
= new Microsoft.Office.Interop.Word.ApplicationClass();
                doc 
= app.Documents.Add(ref templateFile, ref missing, ref missing, ref missing);
                
//打印
                doc.PrintOut(ref missing, ref missing, ref missing, ref missing,
                     
ref missing, ref missing, ref missing, ref missing, ref missing,
                     
ref missing, ref missing, ref missing, ref missing, ref missing,
                     
ref missing, ref missing, ref missing, ref missing);
            }
            
catch
            {

            }
        }


    }
}

 (需要引用Microsoft.Office.Interop.Word com组件)

原文地址:https://www.cnblogs.com/dlz1123/p/1961561.html