最近的項目中須要將Word轉換爲PDF文件,找了不少方法和組件,最後找到了一些方法,和你們分享。
1、使用微軟官方自帶轉換方法
好處是寫法方便,官方支持,缺點是須要在服務器上安裝office,並且要配置COM組件的調用,至關麻煩;感興趣的能夠查一查並配置,代碼以下;git
public void WordToPDF() { string pathAndName = "D:/test/test.docx"; Microsoft.Office.Interop.Word.Application application = new Microsoft.Office.Interop.Word.Application(); Microsoft.Office.Interop.Word.Document document = null; try { string wordname = pathAndName + ".docx"; application.Visible = false; document = application.Documents.Open(wordname); string pdfPath = pathAndName.Replace(".docx", ".pdf"); //pdf存放位置 if (!System.IO.File.Exists(pdfPath)) //存在PDF,不須要繼續轉換 { document.ExportAsFixedFormat(pdfPath, Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF); } } catch (Exception e) { Console.WriteLine(e.Message); throw new Exception("word轉換失敗"); } finally { document.Close(); } }
2、使用免費的Spire.Doc組件來轉換
Spire.Doc有免費的版本和收費的版本,免費的版本能夠轉換3頁的word到pdf,收費的沒有使用過;可是使用轉換後效果不是很好,和word文檔有一些出入,好比word有有下劃線沒寫入內容,轉換後下劃線不見了等問題,遂放棄了該組件;
代碼以下:github
public void wordToPdfWithSpireDoc(string filePath,string wordName,string pdfName) { try { Document doc = new Document(); doc.LoadFromFile(filePath+wordName); doc.SaveToFile(filePath + pdfName, FileFormat.PDF); } catch (Exception e) { Console.WriteLine(e); throw; } }
3、使用Aspose.Words組件
Aspose.Words是一個商業組件,咱們能夠使用破解版等;有點轉換方便快捷,並且轉換效果與word相比,幾乎無差異;服務器
if (File.Exists(exportPath + wordName)) { Document doc = new Document(exportPath + wordName); doc.Save(exportPath + pdfName, Aspose.Words.SaveFormat.Pdf); }
4、總結
word模板導出方法,找到了開源的Xceed.docx,用起來還不錯;
Excel模板導出方法,找到了開源的ExcelReport,git地址 https://github.com/hanzhaoxin/ExcelReport
還有wps轉換word等方法,就不一一列舉,在網上也找了好久,組件不少,合適且免費的相對較少,你們有好的方法和組件也能夠相互交流。app