C# 将HTML网页、HTML字符串转换为PDF文件

HTML转换为PDF可实现格式保留、可靠打印、文档归档等多种用途,满足不同领域和情境下的需求。本文将通过以下两个示例,演示如何使用第三方库Spire.PDF for .NETQT插件在C# 中将Html 网页(URL)或HTML字符串转为PDF文件。

HTML转PDF所需工具:

1. Spire.PDF for .NET

首先需要安装Spire.PDF for .NET到你的项目中,可以官网下载后手动引入,或通过nuget安装。

2. Qt WebEngine

用到QT插件为Qt WebEngine,以下是各操作系统对应的插件包,可点击直接下载,然后解压缩到指定路径。

  • Windows x86
  • Windows x64
  • Linux x64
  • Mac x64

示例一:使用QT插件将Html 网页(URL)转为PDF

步骤:

  1. 指定要转换的URL地址、生成文件路径和QT插件路径;
  2. 调用 HtmlConverter.Convert(string url, string fileName, bool enableJavaScript, int timeout, SizeF pageSize, PdfMargins margins) 方法来转换 URL PDF 文件。

C# 代码:

using Spire.Pdf.Graphics;
using Spire.Pdf.HtmlConverter.Qt;
using System.Drawing;namespace ConvertUrlToPdf
{class Program{static void Main(string[] args){//指定网页URL地址string url = "https://www.baidu.com/";//指定输出文件路径string fileName = "Url转Pdf.pdf";//指定插件路径string pluginPath = "F:\\plugins-windows-x64\\plugins";//设置插件路径HtmlConverter.PluginPath = pluginPath;//将HTML网页转换为PDFHtmlConverter.Convert(url, fileName, true, 100000, new Size(1080, 1000), new PdfMargins(0));}}
}

转换百度首页的效果图:

示例二:使用QT插件将Html 字符串转为PDF

步骤:

  1. 通过File.ReadAllText() 方法从一个 html文件中读取字符串;
  2. 指定生成文件和QT插件路径;
  3. 调用 HtmlConverter.Convert(string htmlString, string fileName, bool enableJavaScript, int timeout, SizeF pageSize, PdfMargins margins, Spire.Pdf.HtmlConverter.LoadHtmlType htmlType) 方法将 HTML 字符串转换为 PDF 文件。

C# 代码:

using System.IO;
using Spire.Pdf.HtmlConverter.Qt;
using System.Drawing;
using Spire.Pdf.Graphics;namespace ConvertHtmlStringToPdfWithPlugin
{class Program{static void Main(string[] args){//从.html文件中获取HTML字符串string htmlString = File.ReadAllText("示例.html");//指定输出文件路径string fileName = "Html字符串转Pdf.pdf";//指定插件路径string pluginPath = "F:\\plugins-windows-x64\\plugins";//设置插件HtmlConverter.PluginPath = pluginPath;//将HTML字符串转换为PDFHtmlConverter.Convert(htmlString, fileName, true, 100000, new Size(1080, 1000), new PdfMargins(0), Spire.Pdf.HtmlConverter.LoadHtmlType.SourceCode);}}
}

 请注意:只有内联 CSS 样式内部 CSS 样式可以在 PDF 上正确呈现。如果是外部 CSS 样式,需要先将其转换为内联或内部 CSS 样式。 

总结:通过以上两个简单的C#示例代码,我们可以实现HTML网页转PDF,或HTML字符串转PDFSpire.PDF for .NET库也支持在不使用插件的情况下将HTML转为PDF,但借助QT插件可以实现更好的渲染效果。


参考:

C#/VB.NET 将 HTML 转换为 PDF

Spire.PDF for .NET 各功能中文教程

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

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

相关文章

引领AI变革:边缘计算与自然语言处理结合的无尽可能

引言 讲到Ai,你第一时间会想到什么?是Chagpt和文心一言这样与人类交流自然的Ai生成式对话服务?还是根据关键字快速制图的Ai绘图?这些都是近年来人们所常知的Ai用途,我们今天来讲讲以自然语言处理为辅,在Ai赋…

在 Python 中使用 OpenCV 通过透视校正转换图像

在计算机视觉和图像处理领域,透视变换是一个强大的工具。它允许我们改变图像的视角以获得新的视点,通常用于校正扭曲或模拟不同的相机角度。本文将探讨一个 Python 脚本,该脚本使用计算机视觉领域流行的 OpenCV 库对图像执行透视变换。我们将…

01-TiDB概述

分布式关系型数据库 1、支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) :OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)解决方案 2、无限制的水平扩容或者缩容 3、兼容MySQL &#xf…

openresty 安装, nginx与 openresty

openresty VS nginx Nginx 是一款高性能的 Web 服务器和反向代理服务器,具备基础的功能如HTTP服务、负载均衡、反向代理以及动静分离等。它是许多互联网应用的核心组件,因其模块化和可扩展的设计而受到欢迎。1 OpenResty 是基于 Nginx 的 Web 平台&…

nodeJs+express+Vue+MongoDB

数据库【Sqlite3、MongoDB、Mysql】简介&小记 Sqlite3: SQLite3是一个轻量级的数据库系统,它被设计成嵌入式数据库。这意味着它是一个包含在应用程序中的数据库,而不是独立运行的系统服务。适用场景:如小型工具、游戏、本地…

ubuntu20根目录扩容

ubuntu根目录/ 或者 /home文件夹有时出现空间满了的情况,可以用gparted工具进行空间的重新分配。 首先,如果你是双系统,需要从windows系统下磁盘压缩分配一部分未使用的空间给ubuntu,注意压缩的空间要邻接ubuntu所在盘的位置。 …

力扣刷MySQL-第七弹(详细讲解)

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:力扣刷题讲解-MySQL 🍹文章作者技术和水平很有限,如果文中出…

【Flink-1.17-教程】-【五】Flink 中的时间和窗口(2)时间语义

【Flink-1.17-教程】-【五】Flink 中的时间和窗口(2)时间语义 1)Flink 中的时间语义2)时间语义的分类2.1.处理时间(process time)2.2.摄取时间(ingestion time)2.3.事件时间&#xf…

大创项目推荐 题目: 基于深度学习的疲劳驾驶检测 深度学习

文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 🔥 优…

Webpack5 基本使用 - 3(完结)

环境区分 可以定义多个配置文件,通过 webpack-merge 合并配置文件。 安装 webpack-merge yarn add webpack-merge公共配置 // webpack.common.js const path require(path) const HtmlWebpackPlugin require(html-webpack-plugin)module.exports {entry: path…

外呼机器人有什么优势?

外呼机器人有什么优势?值得受到大多数电销企业的追捧! 1、电话外呼效率高: 每天可拨打的电话数量是人工的5-10倍,人工一天只能拨打200-300通电话,机器人每天能打3000通电话以上,无须休息,按照…

Java-NIO篇章(4)——Reactor反应器模式

前面已经讲过了Java-NIO中的三大核心组件Selector、Channel、Buffer,现在组件我们回了,但是如何实现一个超级高并发的socket网络通信程序呢?假设,我们只有一台内存为32G的Intel-i710八核的机器,如何实现同时2万个客户端…

openGauss学习笔记-206 openGauss 数据库运维-常见故障定位案例-too many clients already

文章目录 openGauss学习笔记-206 openGauss 数据库运维-常见故障定位案例-too many clients already206.1 高并发报错“too many clients already”或无法创建线程206.1.1 问题现象206.1.2 原因分析206.1.3 处理办法 openGauss学习笔记-206 openGauss 数据库运维-常见故障定位案…

143基于matlab的2D平面桁架有限元分析

基于matlab的2D平面桁架有限元分析,可以改变材料参数,输出平面结构外形,各桁架应力,位移及作用力。可查看节点力,程序已调通,可直接运行。 143 matlab 平面桁架 有限元分析 桁架应力 (xiaohongshu.com)

element-ui 树形控件 通过点击某个节点,遍历获取上级的所有父节点和本身节点

1、需求&#xff1a;点击树形控件的某个节点&#xff0c;需要拿到它上级的所有父节点进行操作 2、代码&#xff1a; 树形控件代码 <el-tree:data"deptOptions"node-click"getVisitCheckedNodes"ref"target_tree_Speech"node-key"id&qu…

prometheus监控RabbitMQ策略

一般用官方的rabbitmq_exporter采取数据即可&#xff0c;然后在普米配置。但如果rabbitmq节点的队列数超过了5000&#xff0c;往往rabbitmq_exporter就会瘫痪&#xff0c;因为rabbitmq_exporter采集的信息太多&#xff0c;尤其是那些队列的细节&#xff0c;所以队列多了&#x…

ubuntu下docker卸载和重新安装

卸载&#xff1a;步骤一&#xff1a;停止Docker服务 首先&#xff0c;我们需要停止正在运行的Docker服务。打开终端&#xff0c;执行以下命令&#xff1a; sudo systemctl stop docker 步骤二&#xff1a;删除Docker安装包 接下来&#xff0c;我们需要删除已经安装的Docker软件…

2024年美赛数学建模思路 - 案例:异常检测

文章目录 赛题思路一、简介 -- 关于异常检测异常检测监督学习 二、异常检测算法2. 箱线图分析3. 基于距离/密度4. 基于划分思想 建模资料 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 一、简介 – 关于异常…

[云访谈]熊娟:要把钟煲煲打造成万店级连锁品牌

导读 众所周知&#xff0c;疫情后期餐饮行业的挑战加剧&#xff0c;市场上流传着这样一句话&#xff1a;“餐饮倒闭率达到百分百”。这意味着&#xff0c;在一条街上&#xff0c;可能每个店铺每年都要更换一次老板。 从宏观角度来看&#xff0c;疫情确实对餐饮业造成了重创。…

【服务器GPT+MJ+GPTs】创建部署GPT+MJ+GPTs程序网站

目录 🌺【前言】 🌺【准备】 🌺【宝塔搭建GPT+MJ+GPTs】 🌼1. 给服务器添加端口 🌼2. 安装宝塔 🌼3. 安装Docker 🌼4. 安装ChatGPT程序 🌼5. 程序更新 🌼6. 修改端口 | 密码 🌼7. 绑定域名+申请SSL证书 🌺【前言】 相信大家都对openai的产品ch…