探索 QuestPDF:全平台支持、多功能、专业级的 .NET PDF 库
QuestPDF 是一个用于生成 PDF 文件的 .NET 库,它提供了一个简洁的 API 和灵活的布局选项,使得在 .NET 应用程序中创建 PDF 文件变得更加简单。
支持多平台,支持的功能有
- 合并文档
- 附加文件
- 提取页面
- 加密/解密
- 扩展元数据
- 限制访问
- 针对 Web 进行优化
- 叠加层 / 底层
安装
第一步,老规矩,先安装
dotnet add package QuestPDF
使用
using QuestPDF.Infrastructure;
QuestPDF.Settings.License = LicenseType.Community;
// 创建 PDF 文档并进行布局
var document = Document.Create(container =>
{
container.Page(page =>
{
page.Margin(50); // 设置页面边距
page.Content().Column(column =>
{
column.Item().Text("Hello, NetShare!").FontSize(24).Bold(); // 添加文本
column.Item().Text("Welcome to follow the official account: Net Sharing");
column.Item().Image("20210517111144223.png"); // 插入图像
});
});
});
// 保存 PDF 文件
document.GeneratePdf("simple-example.pdf");

Document.Create()用于创建 PDF 文档。container.Page()设置页面内容。page.Content()设置页面的内容布局,支持各种布局管理器如Column,Row。column.Item()用于添加单个项目,例如文本、图像等。document.GeneratePdf()用于生成 PDF 文件并保存到指定路径。
样式和布局
QuestPDF 提供了丰富的布局选项,可以方便地调整页面的样式。比如:
- 字体和样式:你可以调整文本的字体、大小、颜色、加粗、斜体等。
- 页边距和对齐方式:设置页面的页边距,并支持内容的对齐。
- 自定义布局:支持
Column,Row,Stack等布局管理器,来实现更复杂的布局设计。
column.Item().Text("Centered Text")
.AlignCenter()
.FontSize(18)
.FontColor(Colors.Blue.Medium);
高级功能:生成动态内容,表格
如果你需要动态生成 PDF 内容,可以根据数据生成多个条目。
var rows = new[]
{
new { Name = "John", Age = 30 },
new { Name = "Jane", Age = 25 },
new { Name = "Tom", Age = 35 }
};
var document = Document.Create(container =>
{
container.Page(page =>
{
page.Content().Column(column =>
{
column.Item().Text("Dynamic Table").AlignCenter().FontSize(24).Bold();
column.Item().Table(table =>
{
table.ColumnsDefinition(columns =>
{
columns.ConstantColumn(150); // 固定宽度
columns.RelativeColumn(); // 自动分配剩余空间
});
table.Header(header =>
{
header.Cell().Text("Name");
header.Cell().Text("Age");
});
foreach (var row in rows)
{
table.Cell().Text(row.Name);
table.Cell().Text(row.Age);
}
});
});
});
});
// 保存 PDF 文件
document.GeneratePdf("simple-example.pdf");
总结
- QuestPDF 是一个功能强大的 PDF 生成库,适用于需要灵活布局和自定义样式的场景。
- 它支持常见的布局管理器(如列和行),以及文本、图像、表格等元素的添加。
- 你可以使用 QuestPDF 创建简单的文档,也可以处理更复杂的需求,如动态内容、复杂的样式设置等。
- 该库可供年总收入低于 100 万美元的任何个人或企业免费使用,或作为非营利组织运营,或者是 FOSS 项目,一般公司完全够使用条件。项目要设置
QuestPDF.Settings.License = LicenseType.Community;。
探索 QuestPDF:全平台支持、多功能、专业级的 .NET PDF 库的更多相关文章
- (数据科学学习手札86)全平台支持的pandas运算加速神器
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 随着其功能的不断优化与扩充,pandas已然成为 ...
- 【Asphyre引擎】Asphyre时隔3年,更名为PXL,全平台支持!
ps:回忆日志 新版本10月初就推出了,我第一时间(10.2日更新,我当天就看到了)下载下来.发现部分Demo需要XE8才能编译通过,又去下载了一个XE8.折腾完已经深夜,只是粗粗的把Demo都编译了 ...
- 可能是目前市面上唯一能够支持全平台的RTMP推流组件:Windows、Linux、Android、iOS、ARM
EasyRTMP是什么? EasyRTMP是一套RTMP直播推送功能组件,内部集成了包括:基本RTMP协议.断线重连.异步推送.环形缓冲区.推送网络拥塞自动丢帧.缓冲区关键帧检索.事件回调(断线.音视 ...
- 全平台轻量开源verilog仿真工具iverilog+GTKWave使用教程
前言 如果你只是想检查Verilog文件的语法是否有错误,然后进行一些基本的时序仿真,那么Icarus Verilog 就是一个不错的选择.相比于各大FPGA厂商的IDE几个G的大小,Icarus V ...
- 海康、大华NVR网络硬盘录像机录像无插件全平台访问实现—录像回放时间轴功能实现方法
在之前的博文中我们有介绍方案*NVR硬件录像机web无插件播放方案(支持取特定时间段视频流)*:该片博文旨在介绍时间轴功能的实现和相关接口的调用: 时间轴样式展示: 问题分析 对于 时间轴的展示实现需 ...
- ewebeditor下利用ckplayer增加html5 (mp4)全平台的支持
学校数字化平台富文本编辑器一直用的ewebeditor,应该说非常的好,支持常用office文档的直接导入,极大的方便了老师们资料的上传,最近在规划整个数字化校园向全平台改版,框架采用bootstra ...
- 报表开发神器!DevExpress Reporting v19.1全平台新功能解析
行业领先的.NET界面控件DevExpress Reporting全新发布了v19.1版本,本文主要为大家介绍.NET Reporting v19.1中发布的所有平台的新功能,欢迎下载v19.1试用, ...
- 苏宁基于Spark Streaming的实时日志分析系统实践 Spark Streaming 在数据平台日志解析功能的应用
https://mp.weixin.qq.com/s/KPTM02-ICt72_7ZdRZIHBA 苏宁基于Spark Streaming的实时日志分析系统实践 原创: AI+落地实践 AI前线 20 ...
- EasyNVR摄像机网页H5全平台无插件直播流媒体播放服务二次开发之接口鉴权示例讲解
背景需求 EasyNVR的使用者应该都清楚的了解到,EasyNVR一个强大的功能就是可以进行全平台的无插件直播.主要原因在于rtsp协议的视频流(默认是需要插件才可以播放的)经由EasyNVR处理可以 ...
- 全平台Markdown笔记软件——Notable
简介 The markdown-based note-taking app that doesn't suck. 一款简介.跨平台的本地笔记软件,github地址:https://github.com ...
随机推荐
- Linux之轨迹记录(script)
使用命令: script 编辑文件: vim /etc/profile 在最后一行添加命令 if [ $UID -ge 0 ]; then exec /usr/bin/script -t 2>/ ...
- 理解Flink之二Window与Watermark
Flnk作为流式计算平台,他能对源源不断发送过来的数据进行处理. 对于数据流的处理方式,可以是来一条处理一条(pipeline的方式),还可以获取一些数据然后统一处理. 对于数据流如何描述一堆数据呢? ...
- \r,\n,\r\n的前世今生
前情 最近在逛论坛的时候遇到有人在提问题,为什么\n在苹果手机上不换行,我以前有网上看到过文章,是因为各系统的解析不同,需要使用\r\n来做兼容,自己虽然知道怎么解决,但是不知具体原因,今特来详细了解 ...
- Centos7.8安装Gitlab
公司为了合规性考虑,需要自己搭建私有化版的github.那不用想,肯定要上GitLab了. 项目背景: 服务器:华为云ECS,需要上公网,并在安全组打开80端口访问. 用户:关闭公开注册,新建用户后, ...
- Centos更改SSH端口的方法
1,vi sshd vi /etc/ssh/sshd_config 2,添加PORT #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress ...
- GooseFS 在云端数据湖存储上的降本增效实践
| 导语 基于云端对象存储的大数据和数据湖存算分离场景已经被广泛铺开,计算节点的独立扩缩容极大地优化了系统的整体运行和维护成本,云端对象存储的无限容量与高吞吐也保证了计算任务的高效和稳定.然而,云 ...
- postgres
10.67 su - app docker pull postgres:12.15 docker run -d --name pgsql12 -p 5432:5432 -e "POSTG ...
- File and Code template
/** * @author muzhi.zhong * @author <a href="mailto:muzhi.z@xxx.cn">muzhi.z</a> ...
- Chaincode installation on peer0.org1 has failed
v1.4 版本执行 ./byfn.sh up时,报如下错误 Error: error getting chaincode deployment spec for mycc: error getting ...
- Anaconda下载安装及Spyder使用Python
第一:选择编程语言, C++ Java Python等,量化交易广泛使用Python开发策略. 第二:选择软件,Anaconda 或者 PyCharm,龙哥选用Anaconda,因为 Anaconda ...