zoukankan      html  css  js  c++  java
  • Word文档转PDF方法探索

    最近的项目中需要将Word转换为PDF文件,找了很多方法和组件,最后找到了一些方法,和大家分享。
    一、使用微软官方自带转换方法
    好处是写法方便,官方支持,缺点是需要在服务器上安装office,而且要配置COM组件的调用,相当麻烦;感兴趣的可以查一查并配置,代码如下;

            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();
                }       
            }
    

    二、使用免费的Spire.Doc组件来转换
    Spire.Doc有免费的版本和收费的版本,免费的版本可以转换3页的word到pdf,收费的没有使用过;但是使用转换后效果不是很好,和word文档有一些出入,比如word有有下划线没写入内容,转换后下划线不见了等问题,遂放弃了该组件;
    代码如下:

            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;
                }
              
            }
    

    三、使用Aspose.Words组件
    Aspose.Words是一个商业组件,我们可以使用破解版等;有点转换方便快捷,而且转换效果与word相比,几乎无差别;

       if (File.Exists(exportPath + wordName))
                    {
                        Document doc = new Document(exportPath + wordName);
                        doc.Save(exportPath + pdfName, Aspose.Words.SaveFormat.Pdf);
                    }
    

    四、总结
    word模板导出方法,找到了开源的Xceed.docx,用起来还不错;
    Excel模板导出方法,找到了开源的ExcelReport,git地址 https://github.com/hanzhaoxin/ExcelReport
    还有wps转换word等方法,就不一一列举,在网上也找了很久,组件很多,合适且免费的相对较少,大家有好的方法和组件也可以相互交流。

  • 相关阅读:
    如何判断点击是否在区域内
    WCF SSL(应用篇-Message)-02
    WCF SSL(证书篇)-01
    获取浏览客户的地址信息
    ASP.Net Controls 用法大全
    C#实现倒油算法
    C#操作Excel(读取)
    C#提取字符串中的数字字符串
    对比MFC和Winform及WPF
    C#图片水印代码整理
  • 原文地址:https://www.cnblogs.com/zqllove/p/10167127.html
Copyright © 2011-2022 走看看