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网页转换为PDF
            HtmlConverter.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字符串转换为PDF
            HtmlConverter.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 各功能中文教程

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度强化学习(王树森)笔记04

深度强化学习(DRL) 本文是学习笔记,如有侵权,请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接:https://github.com/wangshusen/DRL 源代码链接:https://github.c…

R语言-检验正态性

1.为什么要检验正态性 首先需要明确正态性与正态分布是有区别的,正态分布(标准分布)是统计数据的分布方式,是个钟形曲线,已平均值为对称轴,数据在对称轴两侧对称分布。正态性是检验实际数据与标准正态分布…

QT 范例阅读:Vector Deformation

效果图: 主要代码: 实现放大镜效果QPainter painter;//两种方式if (1) {m_lens_image QImage(bounds.size(), QImage::Format_ARGB32_Premultiplied);m_lens_image.fill(0);painter.begin(&m_lens_image);} else {m_lens_pixmap QPixmap(bounds.si…

基于多种CNN模型在清华新闻语料分类效果上的对比

该实验项目目录如图: 1、 模型 1.1. TextCNN # coding: UTF-8 import torch import torch.nn as nn import torch.nn.functional as F import numpy as npclass Config(object):"""配置参数"""def __init__(self, dataset, embedd…

OpenCV 0 - VS2019配置OpenCV

1 配置好环境变量 根据自己的opencv的安装目录配置 2 新建一个空项目 3 打开 视图->工具栏->属性管理器 4 添加新项目属性表 右键项目名(我这是opencvdemo)添加新项目属性表,如果有配置好了的属性表选添加现有属性表 5 双击选中Debug|x64的刚添加的属性表 6 (重点)添…

数据结构(链表)

文章目录 一、单链表1、单链表定义2、初始化单链表2.1、不带头结点的单链表2.2、带头结点的单链表 3、单链表基本操作3.1、按位序插入(带头结点)3.2、按位序插入(不带头结点)3.3、指定结点的后插操作3.4、指定结点的前插操作3.5、…

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-系统属性管理实现

锋哥原创的SpringbootLayui python222网站实战: python222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火…

Linux 文件和文件夹的创建与删除

目录 一. 新建1.1 mkdir 新建文件夹1.2 touch 新建空文件1.3 vi命令创建文件1.4 > 和 >> 新建文件 二. 删除 一. 新建 1.1 mkdir 新建文件夹 -p:递归的创建文件夹,当父目录不存在的时候,会自动创建 mkdir -p test1/test2/test31.…

【HTML 基础】介绍

文章目录 定义作用基本概念1. 标签(Tags)2. 元素(Elements)3. 属性(Attributes)4. 文档结构 总结 HTML(HyperText Markup Language)是构建世界各地互联网页面的基本构建块之一。作为…

【Demo】基于CharacterController组件的角色控制

项目介绍 项目名称:Demo1 项目版本:1.0 游戏引擎:Unity2020.3.26f1c1 IDE:Visual Studio Code 关键词:Unity3D,CharacterController组件,角色控制,自定义按键,Scrip…

基于springboot的美发管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式 🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 &…

报错:npm ERR code EPERM

1 完整错误 npm ERR! code EPERM npm ERR! syscall open npm ERR! path D:\NodeJS\node_cache\_cacache\tmp\7bbab18e npm ERR! errno EPERM npm ERR! FetchError: Invalid response body while trying to fetch https://registry.npmjs.org/webpack: EPERM: operation not pe…

智慧文旅:提升旅游体验与推动经济发展的新动力

一、智慧文旅的定义与意义 智慧文旅,即智慧文化旅游,是一种以当地特色文化元素为核心驱动,利用现代科技手段实现旅游景区全面智慧升级的旅游模式。其意义在于为游客提供高效便捷的旅游信息化服务,提升旅游体验,同时推…

ETCD高可用架构涉及常用功能整理

ETCD高可用架构涉及常用功能整理 1. etcd的高可用系统架构和相关组件1.1 Quorum机制1.2 Raft协议 2. etcd的核心参数2.1 常规配置2.2 特殊优化配置2.2.1 强行拉起新集群 --force-new-cluster2.2.2 兼容磁盘io性能差2.2.3 etcd存储quota 3. etcd常用命令3.1 常用基础命令3.1.1 列…

【DDD】学习笔记-建立统一语言

统一语言是提炼领域知识的产出物,获得统一语言就是需求分析的过程,也是团队中各个角色就系统目标、范围与具体功能达成一致的过程。 使用统一语言可以帮助我们将参与讨论的客户、领域专家与开发团队拉到同一个维度空间进行讨论,若没有达成这…

ThreadLocal内存泄漏示例

ThreadLocal内存泄漏是老生常谈的问题了,原理就不多说了,这里只简单回顾下 Thread类有个属性threadLocals,其实就是个map。 这个map的结构如下,key是ThreadLocal对象,是一个弱引用,value是调用threadLocal…

机器学习周报第30周

目录 摘要Abstract一、文献阅读1 论文标题2 论文摘要3 过去方案4 论文方案5 相关代码 摘要 Abstract 一、文献阅读 1 论文标题 Accurate one step and multistep forecasting of very short-term PV power using LSTM-TCN model - ScienceDirect 2 论文摘要 准确的光伏功…

翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式二

GPT-4 Vision 系列: 翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一 GPT-4 Vision 的 7 个实际用例 Pre-requisites:先决条件: 订阅 ChatGPT Plus 以访问 GPT-4 Vision。如果您不熟悉 Streamlit,请按照安装步骤操作。 1. 绘制您的应…

Java多线程编程中的异常处理策略

第1章:引言 大家好,我是小黑,咱们今天聊聊异常处理。想必大家在写代码的时候都遇到过各种各样的异常吧?有时候,一个小小的异常如果处理不当,就可能导致整个程序崩溃。特别是在多线程环境下,异常…

java关键字概述——final及常量概述

前言: 打好基础,daydayup! final final概述 final关键字是最终的意思,可以修饰(类,方法,变量) final作用 修饰类:该类被称为最终类,特点为不能被继承 修饰方法&#xff…