当前位置: 首页 > news >正文

.NET框架用C#实现PDF转HTML

HTML作为一种开放标准的网页标记语言,具有跨平台、易于浏览和搜索引擎友好的特性,使得内容能够在多种设备上轻松访问并优化了在线分享与互动。通过将PDF文件转换为HTML格式,我们可以更方便地在浏览器中展示PDF文档内容,同时也更容易集成到更复杂的HTML页面中。使用C#在.NET框架下我们可以实现更快的转换过程,以及转换的自动化进行。本文将介绍如何在.NET框架使用C#将PDF文件转换为HTML格式

文章目录

    • 用C#直接转换PDF文件为HTML格式
    • 转换PDF到HTML时自定义转换选项
    • 在字节流中实现PDF到HTML的转换

本文所使用的方法需要用到免费的Free Spire.PDF for .NET,NuGet:Install-Package FreeSpire.PDF

文中所用的示例PDF文档:
用C#实现PDF转HTML

用C#直接转换PDF文件为HTML格式

我们可以使用PdfDocument.LoadFromFile()方法从文件载入PDF文档,然后再使用PdfDocument.SaveToFile(string: fileName, FileFormat.HTML)方法将PDF文档直接转换为HTML文件并保存。以下是操作步骤示例:

  1. 导入所需模块。
  2. 创建PdfDocument实例,并使用PdfDocument.LoadFromFile()方法从文件载入PDF文档。
  3. 使用PdfDocument.SaveToFile(string: fileName, FileFormat.HTML)方法将PDF文档直接转换为HTML格式并保存到文件。
  4. 释放资源。

代码示例

using Spire.Pdf;namespace PDFToHTML
{class Program{static void Main(string[] args){// 创建PdfDocument实例PdfDocument pdf = new PdfDocument();// 载入PDF文件pdf.LoadFromFile("Sample.pdf");// 将PDF转换为HTML并保存pdf.SaveToFile("output/PDFToHTML.html", FileFormat.HTML);// 释放资源pdf.Dispose();}}
}

运行结果
用C#直接转换PDF文件为HTML格式

转换PDF到HTML时自定义转换选项

在载入 PDF 文档后,可以通过访问文档的PdfDocument.ConvertOptions属性获取PdfConvertOptions实例。随后,可调用PdfConvertOptions.SetPdfToHtmlOptions()方法设置转换选项。该方法接受以下四个参数:

  • bool: 是否将 SVG 嵌入到 HTML 中;
  • bool: 是否将图像嵌入到 HTML 中;
  • int: 单文件最大页数;
  • bool: 是否使用高质量嵌入 SVG。
    以下是具体操作步骤的示例:
  1. 导入所需模块。
  2. 创建PdfDocument实例,并使用PdfDocument.LoadFromFile()方法从文件载入PDF文档。
  3. 访问文档的PdfDocument.ConvertOptions属性获取PdfConvertOptions实例。
  4. 调用PdfConvertOptions.SetPdfToHtmlOptions()方法设置转换选项。
  5. 使用PdfDocument.SaveToFile(string: fileName, FileFormat.HTML)方法将PDF文档转换为HTML格式并保存到文件。
  6. 释放资源。

代码示例

using Spire.Pdf;namespace PDFToHTML
{class Program{static void Main(string[] args){// 创建PdfDocument实例PdfDocument pdf = new PdfDocument();// 载入PDF文件pdf.LoadFromFile("Sample.pdf");// 访问ConvertOptions属性PdfConvertOptions toHtmlOptions = pdf.ConvertOptions;// 设置转换HTML选项toHtmlOptions.SetPdfToHtmlOptions(false, true, 5, false);// 将PDF转换为HTML并保存pdf.SaveToFile("output/PDFToHTML.html", FileFormat.HTML);// 释放资源pdf.Dispose();}}
}

运行结果
转换PDF到HTML时自定义转换选项

在字节流中实现PDF到HTML的转换

除了从磁盘载入PDF文件转换为HTML格式外,我们还可以使用PdfDocument.LoadFromStream()方法直接载入流中的PDF文档,然后使用PdfDocument.SaveToStream(Stream: stream, FileFormat.HTML)将PDF文档转换为HTML文件流。以下是操作步骤示例:

  1. 导入所需模块。
  2. 创建MemoryStream实例或使用现有实例。
  3. 创建PdfDocument实例,使用PdfDocument.LoadFromStream()从流载入PDF文档。
  4. 使用PdfDocument.SaveToStream(Stream: stream, FileFormat.HTML)将PDF文档转换为HTML文件流。
  5. 将流写入文件或根据需要进行其他操作。
  6. 释放资源。

代码示例

using Spire.Pdf;namespace PDFToHTML
{class Program{static void Main(string[] args){// 创建Stream实例或使用现有实例MemoryStream stream = new MemoryStream();File.OpenRead("Sample.pdf").CopyTo(stream);// 创建PdfDocument实例PdfDocument pdf = new PdfDocument();// 从流中载入PDF文件pdf.LoadFromStream(stream);// 将PDF转换为HTML并保存到流pdf.SaveToStream(stream, FileFormat.HTML);// 将流写入文件或根据需要进行其他操作File.WriteAllBytes("output/PDFToHTMLStream.html", stream.ToArray());// 释放资源pdf.Dispose();}}
}

运行结果
在字节流中实现PDF到HTML的转换

本文介绍如何在.NET框架使用C#将PDF转换为HTML格式,提供步骤介绍及代码示例。

相关文章:

.NET框架用C#实现PDF转HTML

HTML作为一种开放标准的网页标记语言,具有跨平台、易于浏览和搜索引擎友好的特性,使得内容能够在多种设备上轻松访问并优化了在线分享与互动。通过将PDF文件转换为HTML格式,我们可以更方便地在浏览器中展示PDF文档内容,同时也更容…...

mamba-ssm安装

注意1:mamba-ssm要与casual-conv1d一起安装。 注意2:mamba-ssm与cuda、pytorch版本要对应。需要看你下载的代码的requirements.txt causal-conv1d与mamba的whl包官网下载: https://github.com/Dao-AILab/causal-conv1d/releases?page3 htt…...

网络IP协议

IP(Internet Protocol,网际协议)是TCP/IP协议族中重要的协议,主要负责将数据包发送给目标主机。IP相当于OSI(图1)的第三层网络层。网络层的主要作用是失陷终端节点之间的通信。这种终端节点之间的通信也叫点…...

双指针算法详解

目录 一、双指针 二、双指针题目 1.移动零 解法: 代码: 2.复写零 ​编辑 解法: 代码: 边界情况处理: 3.快乐数 ​编辑 解法:快慢指针 代码: 4.盛水最多的容器 解法:(对撞指针)…...

MySQL的最左匹配原则是什么

最左匹配原则是应用于联合索引的规则。 对于以下表F:f1,f2,f3;建立了联合索引(f2,f3),那么我们在查询的时候如果是: select * from F where f2 ? and f3 ?; 或 sele…...

LeetCode:106.从中序与后序遍历序列构造二叉树

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:106.从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder ,其中 inorder …...

22. 【.NET 8 实战--孢子记账--从单体到微服务】--记账模块--切换主币种

这篇文章我们将结合主币种设置以及收支记录实现切换主币种后重新计算以前记录的转换后的金额。那么,为什么要在切换主币种后要重新计算转换后的金额呢?有以下两个原因: 统一的币种,方便我们统计数据方便用户按照当地的币种查看收…...

01.02周四F34-Day43打卡

文章目录 1. 地是湿的。昨晚估计下雨了。2. 你可能把包丢在餐厅里了吧?3. 她说他可能误了航班。4. 我本来应该早点来的,但路上特别堵。5. 约翰可能在那次事故中受了重伤。6. 这是一个情景对话7. 我本可以走另一条路的。8. 我准是瘦了不少,你看我这裤子现在多肥。9. 钱没了!会…...

行业商机信息付费小程序系统开发方案

行业商机信息付费小程序系统,主要是整合优质行业资源,实时更新的商机信息。在当今信息爆炸的时代,精准、高效地获取行业商机信息对于企业和个人创业者而言至关重要。 一、使用场景 日常浏览:用户在工作间隙或闲暇时间&#xff0c…...

cut-命令详解

一、命令 1.cut列截取命令 cut命令的默认分隔符是制表符 2.参数: -f 列号 #提取第几列-d 分隔符 #按照指定分隔符分割列-c 字符范围 #不依赖分隔符来区分列,而是通过字符范围(行首为0)来进行字段提取。“n-”表…...

Apache MINA 反序列化漏洞CVE-2024-52046

漏洞描述: Apache MINA 是一个功能强大、灵活且高性能的网络应用框架。它通过抽象网络层的复杂性,提供了事件驱动架构和灵活的 Filter 链机制,使得开发者可以更容易地开发各种类型的网络应用。 Apache MINA 框架的 ObjectSerializationDeco…...

二、AI知识(神经网络)

二、AI知识(神经网络) 1.常用算法 FNN CNN RNN LSTM DNN GRU 2.深度学习中概念及算法 1. 感知机 感知机(Perceptron)是一种最早的人工神经网络模型之一,通常用来解决二分类问题。它由弗兰克罗森布拉特&#…...

node.js之---子线程(child_process)模块

为什么需要子线程(child_process)模块 Worker Threads 的基本概念 如何使用 Worker Threads Worker Threads 的性能 Worker 线程的优势和限制 进阶用法:共享内存 为什么需要子线程(child_process)模块 在 Node.js…...

Json字符串解析失败

通过第三方服务,拿到响应体的data对象(拿到的时候对象是有值的) 通过JSON.parseObject方法,拿到的对象,值为null 通过查看对应的json字符串,发现命名不一样... JSONField SeriealizedName注解是用来解析j…...

LeetCode算法题——螺旋矩阵ll

题目描述 给你一个正整数n,生成一个包含1到n2所有元素,且元素按顺时针顺序螺旋排列的n x n正方形矩阵matrix 。 示例 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]]题解 思路: 将整个过程分解为逐圈填充的过程&#xf…...

【开源社区openEuler实践】hpcrunner

title: 探索 Hpcrunner:高性能计算的得力助手 date: ‘2024-12-31’ category: blog tags: Hpcrunner高性能计算任务调度资源优化 sig: HPC archives: ‘2024-12’ author:way_back summary: Hpcrunner 作为高性能计算领域的一款实用工具,专注于优化任务…...

linux下安装达梦数据库v8详解

目录 操作系统、数据库 1、下载达梦数据库 2、安装前准备 2.1、建立数据库用户和组 2.2、修改文件打开最大数 2.3、挂载镜像 2.4、新建安装目录 3、数据库安装 4、配置环境变量 5、初始化数据库实例 6、注册服务 7、使用数据库 8、卸载数据库 9、多实例管理 10、…...

Redis的常用命令

Redis中文字典网站 redis 命令手册https://redis.com.cn/commands.html Keys * 查看当前库所有的key exists ke 判断某个key是否存在 type key查看你的key是什么类型 Del key删除执行的key数据 unlink key非阻塞删除,仅仅将keys从keyspace元数据中删除&#xf…...

Docker入门常用命令总结

1.从远程仓库拉取一个纯净的镜像 docker pull docker .io/centos 2.创建并进入容器(左外右内) docker run --name xxx -dit 镜像id(镜像名称:Tag) /bin/bash 【参数必须放在镜像ID之前】 -i 让Docker分配一个伪终端,并…...

【Qt】容器控件、布局管理控件

目录 容器控件 QGroupBox QTabWidget 布局管理控件 QVBoxLayout 例子: QHBoxLayout 例子: QGridLayout 例子: 例子: QFormLayout 例子: QSpacerItem 例子: 容器控件 QGroupBox 表示一个带有…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

鸿蒙(HarmonyOS5)实现跳一跳小游戏

下面我将介绍如何使用鸿蒙的ArkUI框架&#xff0c;实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...

Python训练营-Day26-函数专题1:函数定义与参数

题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一个名为 calculate_circle_area 的函数&#xff0c;该函数接收圆的半径 radius 作为参数&#xff0c;并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求&#xff1a;函数接收一个位置参数 radi…...