好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#开发之Word批量转PDF

C#开发之Word批量转PDF

C#开发之Word批量转PDF

微软Office Word本身已经提供了另存为PDF文档功能,对于少量文档,手工使用该方式进行Word转换为PDF尚可,一旦需要处理大量的文档,可能就显得有些捉襟见肘了。不过对于已经安装有Office环境,借助一些简单的代码即可实现批量Word转PDF了。

源码奉上:

?

using   System;

using   System.Collections.Generic;

using   System.ComponentModel;

using   System.Data;

using   System.Diagnostics;

using   System.IO;

using   System.Text;

using   System.Threading;

using   Microsoft.Office.Interop.Word;

 

namespace   Word2Pdf

{

     class   Program

     {

         public   static   Microsoft.Office.Interop.Word.Document wordDocument { get ; set ; }

 

         static   void   Main( string [] args)

         {

             string   strFolder_f = null ;

             string   strFolder_t = null ;

             string   strFlag = null ;

             System.Console.WriteLine( "请输入Word文档所在目录" );

             strFolder_f = System.Console.ReadLine();

             if   (strFolder_f.Substring(strFolder_f.Length - 1, 1) != "\\" )

             {

                 strFolder_f += "\\" ;

             }

             strFolder_t = strFolder_f + @"pdf\" ;

             System.Console.WriteLine( "\n创建PDF文档,请确认!" );

             System.Console.Write( "y(yes) or n(no) ?  " );

             strFlag = System.Console.ReadLine();

             if   (strFlag == "y" )

             {

                 System.Console.WriteLine( "\n开始创建PDF文档..." );

                 CheckFolder(strFolder_t);

                 string   strPdfFile = null ;

                 DirectoryInfo TheFolder = new   DirectoryInfo(strFolder_f);

 

                 Microsoft.Office.Interop.Word.Application appWord = new   Microsoft.Office.Interop.Word.Application();

                 object   paramMissing = Type.Missing;

 

                 foreach   (FileInfo NextFile in   TheFolder.GetFiles())

                 {

                     strPdfFile = Path.ChangeExtension(strFolder_t + NextFile.Name, ".pdf" );

                     wordDocument = appWord.Documents.Open(NextFile.FullName);

                     if   (wordDocument != null )

                     {

                         wordDocument.ExportAsFixedFormat(strPdfFile, WdExportFormat.wdExportFormatPDF);

                         wordDocument.Close( ref   paramMissing, ref   paramMissing, ref   paramMissing);

                         wordDocument = null ;

                     }

                     System.Console.Write( ".. " );

                 }

 

                 if   (appWord != null )

                 {

                     appWord.Quit( ref   paramMissing, ref   paramMissing, ref   paramMissing);

                     appWord = null ;

                 }

             }

 

             //KillProcessByName("WINWORD");

             GC.Collect();

             GC.WaitForPendingFinalizers();

 

             System.Console.Write( "\n处理完毕,输入任意键退出" );

             System.Console.ReadKey();

         }

 

         static   void   CheckFolder( string   strFolderPath)

         {

             if   (Directory.Exists(strFolderPath))

             {

                 Directory.Delete(strFolderPath, true );

                 Directory.CreateDirectory(strFolderPath);

             }

             else

             {

                 Directory.CreateDirectory(strFolderPath);

             }

         }

 

         static   void   KillProcessByName( string   name)

         {

             Process[] ps = Process.GetProcessesByName(name);

             foreach   (Process p in   ps)

             {

                 if   (p.ProcessName == name)

                     p.Kill();

             }

         }

     }

}

需要注意的两个问题:①及时关闭代码中所打开的文档,见49行,否则会产生临时文件;②及时关闭“WINWORD”线程,否则所处理的Word文档会一直处于被该线程占用的情况。


作者: 韩 锁  
出处: http://www.cnblogs.com/hans_gis/  
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于C#开发之Word批量转PDF的详细内容...

  阅读:44次