1、基於Office的解決方案app
1.獲取指定文件夾下的全部word文件ui
static void Main(string[] args) { try { Console.WriteLine("------------開始---------------"); string path = @"XXXXXXXXXXXXXXXXXX";//word所在的文件夾 string SaveFile = @"XXXXXXXXXXXXXXXXXX";//保存路徑 DirectoryInfo di = new DirectoryInfo(path); Console.Write("請輸入指定名稱(不輸入獲取全部文件):"); string filename = Console.ReadLine(); //找到該目錄下的文件 FileInfo[] FileList; if (!string.IsNullOrEmpty(filename)) { FileList = di.GetFiles(filename); } else { FileList = di.GetFiles(); } int Success = 0; int Fail = 0; foreach (FileInfo item in FileList) { string Filescr = SaveFile + item.Name; bool bFlagPdf = Common.FileWordToPdf.ConvertToPdf(item.FullName, Filescr); if (bFlagPdf == true) { Success++; Console.WriteLine(item.Name + " ----- 轉換成功"); } else { Fail++; Console.WriteLine(item.Name + " ----- 轉換失敗"); } } Console.WriteLine("------------結束,結果以下:---------------"); Console.WriteLine("需生PDF共:" + FileList.Length + "份"); Console.WriteLine("成功PDF共:" + Success + "份協議"); Console.WriteLine("失敗PDF共:" + Fail + "份協議"); Console.ReadKey(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
2.建立一個Helper類spa
using Microsoft.Office.Interop.Word; using System.IO; public class FileWordToPdf_Helper { /// <summary> /// 直接使用Word轉PDF /// </summary> /// <param name="mWordSrc">Word路徑</param> /// <param name="SavsFile">保存路徑</param> /// <returns></returns> public static bool ConvertToPdf(string mWordSrc,string SavsFile) { try { #region Com component Microsoft.Office.Interop.Word.Application appWord = null; object oMissing = System.Reflection.Missing.Value; if (appWord == null) { appWord = new Microsoft.Office.Interop.Word.Application(); } Microsoft.Office.Interop.Word.Document doc = appWord.Documents.Open(mWordSrc); doc.Activate(); string mPDFSrc = Path.ChangeExtension(SavsFile, "pdf"); doc.ExportAsFixedFormat(mPDFSrc, WdExportFormat.wdExportFormatPDF); object saveChanges = WdSaveOptions.wdDoNotSaveChanges; ((_Document)doc).Close(ref saveChanges, ref oMissing, ref oMissing); doc = null; ((_Application)appWord).Quit(ref oMissing, ref oMissing, ref oMissing); appWord = null; GC.Collect(); GC.WaitForPendingFinalizers(); #endregion return true; } catch (Exception ex) { return false; throw (ex); } } }