如何利用C#將word檔產生為pdf
在常見的企業需求中,常常會有將word檔轉換成pdf的要求,而一般來說若採取免費的方案有幾種solution
1. 利用提供免費API(例如:docx4j),而此種方式有時候要碰碰運氣,若word的格式太過於複雜,轉換的格式經常會跑掉,若遇到中文字有時會變成亂碼
因為此種方式採用前要先有心裡準備,或是先將要轉的word格式都試過後,都不會跑版才放心採行。
2.利用呼叫 Microsoft.Office.Interop.Word的原生功能轉檔,此方式來說近乎100%的格式沒有問題,但是執行環境下要安裝Office,若採行免費方案下,此方式則被排除。
當然綜合以上二點,所以會想到是否又免費的方案,且轉換格式不跑掉的雙贏策略,那就Open Office 呼之欲出:
本說明採納Open Office的另一實作LibraOffice, 請先下載安裝後,
利用C# 的Process的方法進行執行Commend Line 產生PDF,程式碼如下:
/// <summary>
/// 利用LibraOffice將Doc轉成PDF
/// </summary>
/// <param name=”openOfficePath”>soffice.exe的路徑</param>
/// <param name=”workDir”>要被轉換檔案的資料夾位置</param>
/// <param name=”docFileName”>要被轉換檔案的名稱</param>
/// <returns></returns>
private bool convertDocToPdf(String openOfficePath,String workDir,String docFileName)
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = openOfficePath;
startInfo.WorkingDirectory = workDir;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = “–headless –convert-to pdf “+docFileName;
try
{
using (Process exeProcess = Process.Start(startInfo))
{
exeProcess.WaitForExit();
}
return true;
}
catch (Exception ex)
{
Console.WriteLine(ex);
return false;
}
}
範例為將在D:\tmp2下的a.doc 在執行後會產生在D:\tmp2\a.pdf
convertDocToPdf(“C:\\Program Files (x86)\\LibreOffice 5\\program\\soffice.exe”, “D:\\tmp2″,”a.doc”);
近期留言