Word格式转换为PDF格式

第一步

创建一个项目文件, 建一个controller, 通过Nuget管理工具引入Microsoft.Office.Interop.Word包

 public ActionResult Index()
       {
            string sourcePath= "D:/works/daima/Demofile/xx.docx";// 文件的物理地址
            string targetPath= "D:/works/daima/Demofile";//文件想要保存的地址
           wordtopdf(sourcePath,targetPath)
           return View();
       }

第二步

写入转换的方法,然后调用。注意: 有额能ApplicationClass 会报错:无法嵌入会操作类型,亲使用适合的接口
解决方法:打开引用,找到Microsoft.Office.Interop.Word包,然后右键属性,会有一个嵌入互操作类型,把他改为False 就可以了。

  public static bool wordtopdf(string sourcePath, string targetPath)
        {
          
            bool result = false;
            WdExportFormat wdExportFormatPDF = WdExportFormat.wdExportFormatPDF;//转换格式1.wdExportFormatPDF转换成pdf格式 2.wdExportFormatXPS转换成xps格式
            object missing = Type.Missing;
            ApplicationClass applicationClass = null;
            Document document = null;
            try
            {
                applicationClass = new ApplicationClass();
                object inputfileName = sourcePath;//需要转格式的文件路径
                string outputFileName = targetPath;//转换完成后PDF或XPS文件的路径和文件名名称
                WdExportFormat exportFormat = wdExportFormatPDF;//导出文件所使用的格式
                bool openAfterExport = false;//转换完成后是否打开
                WdExportOptimizeFor wdExportOptimizeForPrint = WdExportOptimizeFor.wdExportOptimizeForPrint;//导出方式1.wdExportOptimizeForPrint针对打印进行导出,质量较高,生成的文件大小较大。2.wdExportOptimizeForOnScreen 针对屏幕显示进行导出,质量较差,生成的文件大小较小。
                WdExportRange wdExportAllDocument = WdExportRange.wdExportAllDocument;//导出全部内容(枚举)
                int from = 0;//起始页码
                int to = 0;//结束页码
                WdExportItem wdExportDocumentContent = WdExportItem.wdExportDocumentContent;//指定导出过程中是否只包含文本或包含文本的标记.1.wdExportDocumentContent:导出文件没有标记,2.导出文件有标记
                bool includeDocProps = true;//指定是否包含新导出的文件在文档属性
                bool keepIRM = true;//
                WdExportCreateBookmarks wdExportCreateWordBookmarks = WdExportCreateBookmarks.wdExportCreateWordBookmarks;//1.wdExportCreateNoBookmarks:不要在导出文件中创建书签,2.wdExportCreateHeadingBookmarks:标题和文本框导出的文件中创建一个书签,3.wdExportCreateWordBookmarks每个字的书签,其中包括除包含页眉和页脚中的所有书签导出的文件中创建一个书签。
                bool docStructureTags = true;
                bool bitmapMissingFonts = true;
                bool UseISO19005_1 = false;//生成的文档是否符合 ISO 19005-1 (PDF/A)
                document = applicationClass.Documents.Open(ref inputfileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
                if (document != null)
                {
                    document.ExportAsFixedFormat(outputFileName, exportFormat, openAfterExport, wdExportOptimizeForPrint, wdExportAllDocument, from, to, wdExportDocumentContent, includeDocProps, keepIRM, wdExportCreateWordBookmarks, docStructureTags, bitmapMissingFonts, UseISO19005_1, ref missing);
                }
                result = true;
            }
            catch
            {
                result = false;
            }
            finally
            {
                if (document != null)
                {
                    document.Close(ref missing, ref missing, ref missing);
                    document = null;
                }
                if (applicationClass != null)
                {
                    applicationClass.Quit(ref missing, ref missing, ref missing);
                    applicationClass = null;
                }
            }
            return result;
        }

以上, 这就是Word 转换PDf 方式, 可以结合我写的定时任务那个, 可以每天扫描一下对应的文件夹然后把word文档全部转换为pdf。

posted @ 2021-01-28 15:00  Walace日志记录  阅读(231)  评论(0)    收藏  举报