【C#】Html转Pdf,Spire和iTextSharp结合,.net framework 4.8

🌹欢迎来到《小5讲堂》🌹
🌹这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。🌹
🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!🌹

在这里插入图片描述

目录

  • 前言
  • 安装插件
    • iTextSharp - 5.5.13.4
    • FreeSpire.PDF - 10.2.0
    • QT插件
  • 完整代码
  • 实际应用场景
    • HTML转PDF
    • PDF追加文本
  • 相关文章

前言

当你感到迷茫的时候,适当给自己一些工作上或者生活上的事情做一些减法。
在整理自己一些在线文档时,发现当时记录一些代码的草稿技术文章。
因此,简单整理发一篇文章分享下当时的过程,希望能给小伙伴带来点灵感。

安装插件

打开NuGet包管理器,安装下面两个插件,选择合适的版本安装。

iTextSharp - 5.5.13.4

在这里插入图片描述

FreeSpire.PDF - 10.2.0

在这里插入图片描述

QT插件

选择合适版本下载
Windows x86
Windows x64
Linux x64
Mac x64

完整代码

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using Spire.Pdf.Graphics;
using Spire.Additions.Qt;
using Spire.Pdf;private void TestHtmlToPdf()
{try{List<string> sourceFiles = new List<string>();// 输出 - 文件夹string baseDirectory = $"{AppDomain.CurrentDomain.BaseDirectory}";string fileName = $"{Guid.NewGuid()}.pdf";string outputPath = $"{baseDirectory}/{fileName}";if (true){string url = $@"https://www.csdn.net";// string htmlContent = HttpRequest.SendGet(url, "");if (!System.IO.File.Exists(outputPath)){// 如果目录不存在,则创建目录if (!Directory.Exists(baseDirectory)){Directory.CreateDirectory(baseDirectory);}//指定插件路径 - Qt插件解压到E盘(根据自己盘来解压)string pluginPath = @"E:\plugins";//设置插件路径HtmlConverter.PluginPath = pluginPath;//将HTML网页转换为PDFHtmlConverter.Convert(url, outputPath, true, 100000, new Size(1080, 610), new PdfMargins(0));}sourceFiles.Add(outputPath);}// 操作pdf - 追加文本string text = "CSDN博客博主 - 全栈小5";if (true){// 加载现有的 PDF 文件Spire.Pdf.PdfDocument doc = new Spire.Pdf.PdfDocument();doc.LoadFromFile(outputPath);// 获取第一页PdfPageBase page = doc.Pages[0];// 创建一个画刷和字体PdfSolidBrush brush = new PdfSolidBrush(Color.Blue);Font font = new Font("宋体", 18f); // 解决中文乱码问题PdfTrueTypeFont pdfTrueTypeFont = new PdfTrueTypeFont(font, true); // true表示使用Unicode编码// 在指定位置追加文本page.Canvas.DrawString($"{text}", pdfTrueTypeFont, brush, new PointF(200, 20));// 保存修改后的 PDF 文件doc.SaveToFile(outputPath, FileFormat.PDF);// 释放资源doc.Close();}}catch (Exception ex){}
}

在这里插入图片描述

实际应用场景

HTML转PDF

  1. 网页内容存档:将网页内容转换为PDF格式进行长期保存
  2. 电子报告生成:自动将数据分析结果(HTML格式)转换为可打印的PDF报告
  3. 电子发票/收据:将在线生成的发票HTML模板转换为PDF发送给客户
  4. 合同文档生成:将在线填写的合同表单(HTML)转换为正式PDF合同
  5. 教育材料:将在线课程内容转换为PDF供学生下载
  6. 产品目录:将网站上的产品列表转换为PDF目录
  7. 简历生成:将在线填写的简历信息转换为PDF格式
  8. 新闻简报:将每日新闻网页内容转换为PDF简报

PDF追加文本

  1. 合同签署:在已有合同PDF上追加签名和日期信息
  2. 批注和注释:在技术文档或学术论文PDF上添加评论
  3. 水印添加:在PDF文档上追加"机密"或"草稿"等水印文本
  4. 文档编号:在生成的PDF上追加唯一的文档编号
  5. 页眉页脚:为现有PDF文档追加页眉页脚信息
  6. 自动填表:在PDF表单上追加填写的数据
  7. 翻译文档:在原文PDF上追加翻译文本
  8. 法律文件:在判决书等法律文件上追加法官意见
  9. 医疗记录:在患者病历PDF上追加医生诊断意见
  10. 工程图纸:在技术图纸PDF上追加修订说明

相关文章

【C#】Html转Pdf,Spire和iTextSharp结合,.net framework 4.8

【C#】事务(进程 ID 64)与另一个进程被死锁在锁资源上,并且已被选作死锁牺牲品。请重新运行该事务。不能在具有唯一索引“XXX_Index”的对象“dbo.Test”中插入重复键的行。

【C#】使用DeepSeek帮助评估数据库性能问题,C# 使用定时任务,每隔一分钟移除一次表,再重新创建表,和往新创建的表追加5万多条记录

【C#】合理使用DeepSeek相关AI应用为我们提供强有力的开发工具,在.net core 6.0框架下使用JsonNode动态解析json字符串,如何正确使用单问号和双问号做好空值处理

【C#】已经实体类和动态实体类的反射使用方法,两分钟回顾,码上就懂

【C#】使用vue3的axios发起get和post请求.net framework部署的API显示跨域

【C#】.net core 6.0 webapi 使用core版本的NPOI的Excel读取数据以及保存数据

【C#】pdf按页分割文件,以及分页合并,效果还不错,你值得拥有

【C#】未能加载文件或程序集“CefSharp.Core.Runtime.dll”或它的某一个依赖项。找不到指定的模块。

【C#】.net core 6.0 在program时间格式统一json格式化,并列举program默认写法和简化写法

【C#】.net core 6.0 ApiController,API控制器方法,API接口以实体类作为接收参数应该注意的点

【C#】 SortedDictionary,查找字典中是否存在给定的关键字

【C#】.net core 6.0 MVC返回JsonResult显示API接口返回值不可被JSON反序列化

【C#】.net core 6.0 使用第三方日志插件Log4net,配置文件详细说明

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),代码实现篇

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),流程描述篇

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

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

相关文章

KrillinAI:视频跨语言传播的一站式AI解决方案

引言 在全球内容创作领域&#xff0c;跨语言传播一直是内容创作者面临的巨大挑战。传统的视频本地化流程繁琐&#xff0c;涉及多个环节和工具&#xff0c;不仅耗时耗力&#xff0c;还常常面临质量不稳定的问题。随着大语言模型(LLM)技术的迅猛发展&#xff0c;一款名为Krillin…

AllDup:高效管理重复文件

AllDup 是一款免费高效的重复文件管理工具&#xff0c;专为 Windows 系统设计&#xff0c;支持快速扫描并清理冗余文件&#xff0c;优化存储空间。它通过智能算法识别重复内容&#xff0c;覆盖文本、图片、音频、视频等常见文件类型‌。软件提供便携版与安装版&#xff0c;无需…

C++进程间通信开发实战:高效解决项目中的IPC问题

C进程间通信开发实战&#xff1a;高效解决项目中的IPC问题 在复杂的软件项目中&#xff0c;进程间通信&#xff08;Inter-Process Communication, IPC&#xff09;是实现模块化、提高系统性能与可靠性的关键技术之一。C作为一门高性能的编程语言&#xff0c;广泛应用于需要高效…

用 Depcheck 去除Vue项目没有用到的依赖

1. 安装 Depcheck 插件 npm i -g depcheck 2. 运行命令&#xff0c;查看为用到的依赖 npx depcheck depcheck 3. 查询到所有为用到的依赖 E:\Project>depcheck Unused dependencies * riophae/vue-treeselect * codemirror * connect * qs * sortablejs * vue-count-t…

猿辅导集团推首个教育AI范式小猿AI 聚焦家校应用场景发布3款新品

近两年&#xff0c;通用大模型呈爆发式发展&#xff0c;垂类AI遭遇“技术平替”危机。 4月15日&#xff0c;猿辅导集团在“小猿AI暨智能硬件战略发布会”上&#xff0c;正式推出首个教育AI范式——“小猿AI”&#xff0c;并发布覆盖家校两端的“软件应用智能终端通识课程”三位…

英语单词 list 11

前言 这一个 list 是一些简单的单词。感觉这个浏览单词的方法比较低效&#xff0c;所以准备每天最多看一个 list &#xff0c;真要提升英语水平&#xff0c;感觉还是得直接做阅读理解题。就像我们接触中文阅读材料一样&#xff0c;当然光知道这个表面意思还不够&#xff0c;还…

BufferedReader 终极解析与记忆指南

BufferedReader 终极解析与记忆指南 一、核心本质 BufferedReader 是 Java 提供的缓冲字符输入流&#xff0c;继承自 Reader&#xff0c;通过内存缓冲和行读取功能极大提升文本读取效率。 核心特性速查表 特性说明继承链Reader → BufferedReader缓冲机制默认 8KB 字符缓冲…

树莓派超全系列教程文档--(26)在 Raspberry Pi 上配置热点

在 Raspberry Pi 上配置热点 在 Raspberry Pi 上配置热点启用热点禁用热点使用 Raspberry Pi 作为网桥 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 在 Raspberry Pi 上配置热点 Raspberry Pi 可以使用无线模块托管自己的无线网络。如果您通过…

[硬件]单片机下载电路讲解-以ch340为例

首先我们明确要实现的效果&#xff1a; 实现 CH340 通过 Type - C 接口下载程序到单片机 1、前置知识 首先我们要知道 ch340 和typec的作用分别是什么 CH340 作用(usb-ttl) CH340 是一种 USB 转串口芯片 。其主要作用是实现 USB 总线与异步串行接口之间的转换&#xff0c;充当 …

linux入门六:Linux Shell 编程

一、Shell 概述 1. 什么是 Shell&#xff1f; Shell 是 Linux 系统中用户与内核之间的桥梁&#xff0c;作为 命令解析器&#xff0c;它负责将用户输入的文本命令转换为计算机可执行的机器指令。 本质&#xff1a;Shell 是一个程序&#xff08;如常见的 Bash、Zsh&#xff09…

用shell脚本实现自动监控并封禁连接数超过阈值的IP

写一个 shell 脚本&#xff0c;创建脚本文件 /usr/local/bin/check_conn.sh #!/bin/bash if [[ $EUID -ne 0 ]]; thenecho "This script must be run as root." >&2exit 1 fi # 连接数阈值 THRESHOLD50# 白名单 IP&#xff08;空格分隔&#xff09; WHITELIS…

VS 中Git 中本地提交完成,没有推送,修改的内容如何还原

在 Visual Studio 中撤销本地提交但未推送的修改&#xff0c;可以通过以下方法实现&#xff1a; 一、保留修改内容&#xff08;仅撤销提交记录&#xff09; 使用 git reset --soft 在 VS 的 Git 终端中执行&#xff1a; git reset --soft HEAD~1作用&#xff1a;撤销最后一次提…

qt中的正则表达式

问题&#xff1a; 1.在文本中把dog替换成cat&#xff0c;但可能会把dog1替换成cat1&#xff0c;如果原本不想替换dog1&#xff0c;就会出现问题 2文本中想获取某种以.txt为结尾的多有文本&#xff0c;普通的不能使用 3如果需要找到在不同的系统中寻找换行符&#xff0c;可以…

Linux命令-vim编辑

用vi或vim命令进入vim编辑器。 基础: u 撤销上一次操作。x剪切当前光标所在处的字符。yy复制当前行。dd剪切当前行。p粘贴剪贴板内容到光标下方。i切换到输入模式&#xff0c;在光标当前位置开始输入文本。:wq保存并退出Vim 编辑器。:q!不保存强制退出Vim 编辑器。 拓展: w光…

VS 基于git工程编译版本自动添加版本号

目录 概要 实现方案 概要 最近在用visual Studio 开发MFC项目时&#xff0c;需要在release版本编译后的exe文件自动追加版本信息。 由于我们用的git工程管理&#xff0c;即需要基于最新的git 提交来打版本。 比如&#xff1a; MFCApplication_V1.0.2_9.exe 由于git 提交信…

nginx入门,部署静态资源,反向代理,负载均衡使用

Nginx在linux上部署静态资源 概念介绍 Nginx可以作为静态web服务器来部署静态资源。这里所说的静态资源是指在服务端真实存在&#xff0c;并且能够直接展示的一些文件&#xff0c;比如常见的html页面、css文件、js文件、图片、视频等资源。 相对于Tomcat&#xff0c;Nginx处理…

【字节跳动AI论文】Seaweed-7B:视频生成基础模型的高成本效益培训

摘要&#xff1a;本技术报告介绍了一种经济有效的视频生成基础模型训练策略。 我们提出了一种中等规模的研究模型&#xff0c;大约有70亿个参数&#xff08;7B&#xff09;&#xff0c;称为Seaweed-7B&#xff0c;使用665,000个H100 GPU小时从头开始训练。 尽管使用适度的计算资…

Java单例模式:实现全局唯一对象的艺术

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、什么是单例模式&#xff1f; 单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;确保一个类只有一个实例&#xff0c…

Oracle 复制表结构(含索引、主键)操作指南

Oracle 复制表结构&#xff08;含索引、主键&#xff09;操作指南 1. 复制基础表结构 -- 创建空表结构&#xff08;不复制数据&#xff09; CREATE TABLE new_table AS SELECT * FROM old_table WHERE 10;2. 复制主键约束 -- 查询原表主键信息 SELECT constraint_name, co…

React 更新state中的对象

更新 state 中的对象 state 中可以保存任意类型的 JavaScript 值&#xff0c;包括对象。但是&#xff0c;你不应该直接修改存放在 React state 中的对象。相反&#xff0c;当你想要更新一个对象时&#xff0c;你需要创建一个新的对象&#xff08;或者将其拷贝一份&#xff09;…