C# 使用Microsoft.Office.Interop.Word 将WORD转成PDF

2023-12-11 06:59

本文主要是介绍C# 使用Microsoft.Office.Interop.Word 将WORD转成PDF,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    /// <summary>
    /// 测试文件
    /// </summary>
    /// <param name="input">文件名</param>
    /// <returns></returns>
    [ApiDescriptionSettings(Name = "Getword")]
    [HttpGet]
    public IActionResult getWord(string wordName)
    {
        string templatePath = "D:\\Template\\wordTemplate.docx";
        string log = "D:\\Template\\l123jpg";
        var tt = new MiniWordPicture() { Extension = DocumentFormat.OpenXml.Packaging.ImagePartType.Jpeg.ToString(), Bytes = File.ReadAllBytes(log), Width = 200, Height = 100 };
        var baidu = new MiniWordHyperLink()
        {
            Url = "https://www.baidu.com/",
            Text = "百度"
        };
        //var tt = new MiniWordPicture() { Extension = ImagePartType.Jpeg.ToString(), Bytes = FileToByte(log), Width = 100, Height = 100 };
        var endDate = new MiniWordColorText { Text = DateTime.Parse("2022-09-15 15:30:00").ToString(), HighlightColor = "#eb70AB", FontColor = "#ffffff" };
        var value = new Dictionary<string, object>()
        {
            ["Name"] = "Jack",
            ["Department"] = "IT Department",
            ["Purpose"] = "Shanghai site needs a new system to control HR system.",
            ["StartDate"] = DateTime.Parse("2022-09-07 08:30:00"),
            ["EndDate"] = endDate,//
            ["Approved"] = true,
            ["Total_Amount"] = 123456,
            //["Logo"] = new MiniWordPicture() { Path = log, Width = 180, Height = 180 },
            ["Logo"] = tt,
            ["baidu"] = baidu,
            ["person"] = new List<Dictionary<string, object>> {
                 new Dictionary<string, object>{ { "name","wade"},{ "age","HR" } },
                 new Dictionary<string, object>{ { "name","admin"},{ "age","it" } },
                 new Dictionary<string, object>{ { "name","erid"},{ "age","测试" } },
                 new Dictionary<string, object>{ { "name","张三"},{ "age","HR" } },
                 new Dictionary<string, object>{ { "name","大"},{ "age","HR在" } },
            }
        };
        MemoryStream wordStream = new MemoryStream();
        MiniWord.SaveAsByTemplate(wordStream, templatePath, value);
        wordStream.Close();

        return new FileStreamResult(new MemoryStream(wordStream.GetBuffer()), "application/octet-stream") { FileDownloadName = wordName + ".docx" };
    }


    public static byte[] ConvertWordToPdf(string wordUrl, string pdfUrl)
    {

        wordUrl = "D:\\Template\\wordTemplate.docx";  //源word地址
         pdfUrl = @"D:\WechatFile\123.pdf";  //生成后的pdf文件地址
        // 创建Word应用程序对象
        Microsoft.Office.Interop.Word.Application wordApplication = new Microsoft.Office.Interop.Word.Application();

        // 将Word文件加载到Document对象中
        Document document = wordApplication.Documents.Open(wordUrl);

        // 创建内存流,并将PDF文件流保存到其中
        MemoryStream pdfStream = new MemoryStream();
        document.SaveAs(pdfUrl, WdExportFormat.wdExportFormatPDF);

        // 关闭Word文档和应用程序对象
        document.Close(false);
        wordApplication.Quit(false);

        // 将生成的PDF转换为byte数组并返回
        byte[] pdfBytes = pdfStream.ToArray();
        pdfStream.Close();

        return pdfBytes;
    }

对应的几个dll版本都在截图中,在nuget 中都可以下载  无水印的

这篇关于C# 使用Microsoft.Office.Interop.Word 将WORD转成PDF的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/479841

相关文章

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

C# Where 泛型约束的实现

《C#Where泛型约束的实现》本文主要介绍了C#Where泛型约束的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用的对象约束分类where T : structwhere T : classwhere T : ne

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J