微軟Office Word本身已經提供了另存為PDF文檔功能,對于少量文檔,手工使用該方式進行Word轉換為PDF尚可,一旦需要處理大量的文檔,可能就顯得有些捉襟見肘了。不過對于已經安裝有Office環(huán)境,借助一些簡單的代碼即可實現批量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創(chuàng)建PDF文檔,請確認!"); System.Console.Write("y(yes) or n(no) ? "); strFlag = System.Console.ReadLine(); if (strFlag == "y") { System.Console.WriteLine("\n開始創(chuàng)建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文檔會一直處于被該線程占用的情況。
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
