word保存为pdf文件

时间:2021-12-04 11:52:35

方法一:Microsoft.Office.Interop.Word另存

/// <summary>

        /// 将word保存为pdf文件
        /// </summary>
        /// <param name="wordFileName">完整的文件名</param>
        /// <param name="savePath">保存的路径</param>
        /// <returns>保存后的文件名</returns>
        public string WordToPdf(string wordFileName, string savePath = null)
        {
            //宣告WORD物件
            Microsoft.Office.Interop.Word.ApplicationClass word = new Microsoft.Office.Interop.Word.ApplicationClass();
            Type wordType = word.GetType();
            string wordSaveFileName = "";
            try
            {
                Microsoft.Office.Interop.Word.Documents docs = word.Documents;
                //打開WORD檔
                Type docsType = docs.GetType();
                word.DisplayAlerts = WdAlertLevel.wdAlertsNone;
                word.Visible = false;
                object oMissing = System.Reflection.Missing.Value;
                object filepath = wordFileName;
                Microsoft.Office.Interop.Word.Document doc = word.Documents.Open(ref filepath, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
                //(Microsoft.Office.Interop.Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { wordFileName, true, true });
                //將開啟檔案轉存為HTML檔 
                Type docType = doc.GetType();
                wordSaveFileName = Path.GetFileName(wordFileName).Replace(Path.GetExtension(wordFileName), ".pdf");
                string saveFile = "";
                if (String.IsNullOrEmpty(savePath))
                {
                    saveFile = wordFileName.Replace(Path.GetExtension(wordFileName), ".pdf");
                }
                else
                {
                    saveFile = savePath + "\\" + wordSaveFileName;
                }
                docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFile, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF });
                docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null);
            }
            finally
            {
                //退出 Word 
                wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);
            }
            return wordSaveFileName;

        }


方法二:Aspose.Words

Aspose.Words.Document document = new Aspose.Words.Document(fileName);

document.Save(fileName.Replace(Path.GetExtension(fileName), ".pdf"), SaveFormat.Pdf);