C#实现word和pdf格式互转

1、word转pdf

使用nuget:

 Microsoft.Office.Interop.Word

winform页面:

后端代码:

//using Spire.Doc;
//using Spire.Pdf;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//using Aspose.Words;
using Microsoft.Office.Interop.Word;
using System.Windows.Forms;
using Application = Microsoft.Office.Interop.Word.Application;namespace file_operations
{public partial class word转PDF : Form{public word转PDF(){InitializeComponent();//窗体居中this.StartPosition = FormStartPosition.CenterScreen;//无边框this.FormBorderStyle = FormBorderStyle.None;//放大无效this.MaximizeBox = false;//版权label4.Text = "该应用由昔舍版权所有,如修改源码请联系15574296763@163.com,侵权后果自负!!!";}private void button1_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();if(openFileDialog.ShowDialog() == DialogResult.OK){string file = openFileDialog.FileName.ToLower();//获取文件扩展名string extension = System.IO.Path.GetExtension(file);if(extension != ".doc" && extension != ".docx"){MessageBox.Show("请选择word文件", "错误提示");}else {textBox1.Text = file;}}}private void button2_Click(object sender, EventArgs e){FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();if(folderBrowserDialog.ShowDialog() == DialogResult.OK){textBox2.Text = folderBrowserDialog.SelectedPath+"\\";}}//保存为PDFprivate void button3_Click(object sender, EventArgs e){if (textBox1.Text.Length == 0 && textBox2.Text.Length == 0 && textBox3.Text.Length ==0){MessageBox.Show("请选择要转换的原文件和要保存的路径", "错误提示");}else{try{//创建一个word实例Application wordapp = new Application();//创建一个word文档对象,并打开word文件Document wordDoc = wordapp.Documents.Open(textBox1.Text);//获取文件扩展名string extension = System.IO.Path.GetExtension(textBox2.Text);//设置保存路径,保存文件名称和文件格式if (extension !=".pdf"){try{string savePath = textBox2.Text + textBox3.Text + ".pdf";wordDoc.SaveAs2(savePath, WdSaveFormat.wdFormatPDF);}catch{MessageBox.Show("请检查选择的文件是否有效,保存的路径是否存在", "错误提示");}}else{try{string savePath = textBox2.Text + textBox3.Text;wordDoc.SaveAs2(savePath, WdSaveFormat.wdFormatPDF);}catch{MessageBox.Show("请检查选择的文件是否有效,保存的路径是否存在", "错误提示");}}//保存以后打开文件路径string openfilePath = textBox2.Text;System.Diagnostics.Process.Start(openfilePath);}catch (Exception ex){MessageBox.Show("请检查选择的文件是否有效,保存的路径是否存在", "错误提示");}}}private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e){PDF转word pDF = new PDF转word();//隐藏本窗体this.Hide();//打开PDF转wordpDF.Show();}private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e){this.Close();PDF转word pDF = new PDF转word();pDF.Close();}}
}

2、pdf转word功能实现:

使用nuget:

破解的Spire.pdf

下载地址:crack-spire/手动破解Spire.PDF,已破解下载链接在底部.md at main · zhjunbai/crack-spire · GitHub

winform页面:

后端代码:
 

using Spire.Pdf;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Office.Interop.Word;
using Application = Microsoft.Office.Interop.Word.Application;
using System.Threading;namespace file_operations
{public partial class PDF转word : Form{public PDF转word(){InitializeComponent();//窗体居中this.StartPosition = FormStartPosition.CenterScreen;//无边框this.FormBorderStyle = FormBorderStyle.None;//放大无效this.MaximizeBox = false;//版权label4.Text = "该应用由昔舍版权所有,如修改源码请联系15574296763@163.com,侵权后果自负!!!";}private void button1_Click(object sender, EventArgs e){//获取PDF文件OpenFileDialog openFileDialog = new OpenFileDialog();if(openFileDialog.ShowDialog() == DialogResult.OK){//获取文件名string files = openFileDialog.FileName.ToLower();//获取文件扩展名string extension = System.IO.Path.GetExtension(files);if(extension != ".pdf"){MessageBox.Show("请选择PDF文件", "错误提示");}else{pdftext.Text = files;}}}private void button2_Click(object sender, EventArgs e){FolderBrowserDialog openFileDialog = new FolderBrowserDialog();if(openFileDialog.ShowDialog() == DialogResult.OK) {wordPath.Text = openFileDialog.SelectedPath + "\\";}}private void button3_Click(object sender, EventArgs e){//初始化pdfDocument实例PdfDocument doc = new PdfDocument();try{//加载PDF文档doc.LoadFromFile(pdftext.Text);//保存为DOC格式文档string savePath = wordPath.Text + wordname.Text + ".DOC";doc.SaveToFile(savePath, FileFormat.DOC);Thread.Sleep(3000);//保存以后打开文件路径string openfilePath = wordPath.Text;System.Diagnostics.Process.Start(openfilePath);}catch{MessageBox.Show("请确定文件选择正确", "错误提示");}}private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e){this.Close();word转PDF word = new word转PDF();word.Close();}private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e){word转PDF word = new word转PDF();//隐藏本窗体this.Hide();word.Show();}}
}

版权所有,使用请留言声明并在代码中添加引用说明!!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/883827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode题练习与总结:将数据流变为多个不相交区间--352

一、题目描述 给你一个由非负整数 a1, a2, ..., an 组成的数据流输入,请你将到目前为止看到的数字总结为不相交的区间列表。 实现 SummaryRanges 类: SummaryRanges() 使用一个空数据流初始化对象。void addNum(int val) 向数据流中加入整数 val 。int…

iOS Swift5算法恢复——HMAC

demangle的时候看到了CryptoSwift,HMAC,于是写一个helloworld,用于对照。 sudo gem install cocoapods pod init pods文件,注意要标注静态链接: # Uncomment the next line to define a global platform for your p…

一些MATLAB到Python的转换指南

1. 矩阵和数组操作 MATLAB使用方括号[]来创建矩阵和数组。Python使用列表[]或NumPy库中的数组。 MATLAB: A [1 2 3; 4 5 6; 7 8 9];Python: import numpy as npA np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])2. 数学运算 MATLAB中很多内置函数可以直接用于矩阵。Python…

Diving into the HAL-----HAL_GPIO

1、怎么看待外设: 从总线连接的角度看,外设和Core、DMA通过总线交换数据,正所谓要想富先修路。要注意,这些总线中的每一个都连接到不同的时钟源,这些时钟源决定了连接到该总线的外设操作的最大速度。 从内存分配的角度…

C#与C++交互开发系列(十六):使用多线程

前言 在开发需要高性能的应用程序时,多线程是提升处理效率和响应速度的关键技术。C 和 C# 各自拥有不同的线程模型和并发工具。在跨语言开发中,如何有效地利用两者的并发特性,同时确保线程安全和数据一致性,是一个值得探讨的问题…

构建最新的LLaMA-Factory镜像

保持最新的仓库代码: git clone https://github.com/hiyouga/LLaMA-Factory.gitcd /root/xiedong/LLaMA-Factory如果不在意本地文件的修改,可以通过以下命令直接获取远端最新的文件: git fetch --all git reset --hard origin/main构建镜像: docker build --progress=pl…

SCSS在Vue中的用法

SCSS在Vue中的用法 一、安装相关依赖1、安装sass - loader和node - sass(或dart - sass) 二、在组件中使用SCSS1、单文件组件(.vue)中的样式使用2、**全局样式使用SCSS**3、在组件中使用变量和混入(Mixins)…

libavdevice.so.58: cannot open shared object file: No such file ordirectory踩坑

博主是将大图切分成小图时遇到 问题一、linux编译后,找不到ffmpeg中的一个文件 产生原因,各种包集成,然后安装以后乱七八糟,甚至官方的教程也不规范导致没有添加路径到系统文件导致系统执行的时候找不到 1.下载 博主进行的离线…

GraphQL系列 - 第1讲 GraphQL语法入门

目录 一、介绍GraphQL二、GraphQL基本使用方法三、Schema 定义语言 (SDL)3.1 类型定义1)对象类型2)标量类型3)枚举类型4)输入类型5)列表类型6)非空类型7)接口类型8)联合类型 3.2 查询…

thrift idl 语言基础学习

include,他的作用是用作 idl 的模块化编程的 include “include_test.thrift” 单行注释 // 单行注释 /** 多行注释 **/// 指定生成好的代码包,其中 namespace 是固定的,后面的是语言,可以是Java 也可以是其他的,后面的是包路径 namespace java com.rpc.thrift namesp…

查询使用方法:

模糊查询: 查询某一列中内容为空的记录。 -- 模糊查询 (项目中尽量不要使用) -- 张x SELECT * FROM student WHERE student_name LIKE 张_; -- % 不限长度的字符 -- 手机号中有 23 0或多个 SELECT * FROM student WHERE phone LIKE %23% -- 名字包含铮的学生 SELEC…

数据结构与算法分析——你真的理解查找算法吗——基于散列的查找(代码详解+万字长文)

一、算法描述 前面讨论的查找算法在处理小数据量(顺序查找)或者有序的数据集合(二分查找)时才使用。我们需要更加强大的算法能够查找较大的集合,而且并不需要有序。最常使用的一个方法是使用散列函数来将目标元素的一个或者多个特征转换成一个值,这个值用来索引一个已经索引的…

密码管理工具实现

该文档详细描述了实现一个简单的密码管理工具的过程,工具基于PHP和MySQL构建,支持用户注册、密码存储、管理以及角色权限控制等核心功能。 系统架构设计 技术栈:PHP(后端逻辑)、MySQL(数据存储&#xff09…

深度学习(七)深度强化学习:融合创新的智能之路(7/10)

一、深度强化学习的崛起 深度强化学习在人工智能领域的重要地位 深度强化学习作为一种融合了深度学习和强化学习的新技术,在人工智能领域占据着至关重要的地位。它结合了深度学习强大的感知能力和强化学习优秀的决策能力,能够处理复杂的任务和环境。例如…

基于 Java 的 Spring Boot 和 Vue 的宠物领养系统设计与实现

需要代码 vx:Java980320 不收取任何费用 在这个宠物领养系统中,我们可以设定两个角色:管理员和普通用户。每个角色的功能和目标略有不同,以下分别介绍: 管理员 管理员的主要职责是确保平台的高效运行&#xff0c…

PythonBase01

将理论,代码,图示三合一。 day1计算机基础结构 硬件 1944年,美籍匈牙利数学家冯诺依曼提出计算机基本结构。 五大组成部分:运算器、控制器、存储器、输入设备、输出设备。 – 运算器:按照程序中的指令&#xff0c…

C++中如何获取时间并格式化为字符串?

在C中&#xff0c;你可以使用标准库中的 <chrono> 和 <iomanip> 头文件来获取当前时间并将其格式化为字符串。以下是一个简单的示例&#xff0c;展示了如何获取当前时间并将其格式化为一个可读的字符串&#xff08;例如&#xff1a;YYYY-MM-DD HH:MM:SS&#xff09…

APISQL企业版离线部署教程

针对政务、国企、医院、军工等内网物理隔离的客户&#xff0c;有时需要多次摆渡才能到达要安装软件的服务器。本教程将指导您使用Linux和Docker Compose编排服务&#xff0c;实现APISQL的离线部署。 准备 准备一台Linux(x86_64)服务器。 安装Docker Engine&#xff08;推荐版本…

Nginx 的讲解和案例示范

一、基础理解 1.1 Nginx 是什么&#xff1f; Nginx是一个高性能的 Web 服务器和反向代理服务器&#xff0c;同时也可以作为邮件代理服务器。Nginx 以其高并发处理能力、低内存消耗和丰富的功能受到广泛欢迎。 主要功能&#xff1a; 静态资源服务&#xff1a;高效地提供 HTM…

【01初识】-初识 RabbitMQ

目录 学习背景1- 初识 MQ1-1 同步调用什么是同步调用&#xff1f;小结&#xff1a;同步调用优缺点 1-2 异步调用什么是异步调用&#xff1f;小结&#xff1a;异步调用的优缺点&#xff0c;什么时候使用异步调用&#xff1f; 1-3 MQ 技术选型 学习背景 异步通讯的特点&#xff…