探索 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 ...
随机推荐
- Tornado框架之应用安全(四)
知识点 Cookie操作 安全Cookie 跨站请求伪造原理 XSRF保护 模板 请求体 HTTP报文头 用户验证 authenticated装饰器 get_current_user()方法 logi ...
- OneForAll - 功能强大的子域收集工具
OneForAll,是 shmilylty 在 Github 上开源的子域收集工具,目前版本为 v0.4.3. 收集能力强大,利用证书透明度收集子域.常规检查收集子域.利用网上爬虫档案收集子域.利用D ...
- 从Hbase shell理解列式存储
列存储和行存储在理解上的差别挺大,特别是在非常数据行存储之后. 在行存储中,每张表的结构是固定的,某一列可以没有值但是这一列是必须在的.那么可以理解行存储的数据是结构化的. 但是列存储确有每行的数据却 ...
- BeautifulSoup(bs4)细致讲解
BeautifulSoup(bs4) BeautifulSoup是python的一个库,最主要的功能是从网页爬取数据,官方是这样解释的:BeautifulSoup提供一些简单,python式函数来处理 ...
- uniapp 使用pinpa 持续化更新
安装依赖 npm i pinia npm i pinia-plugin-persistedstate 新建 index.ts import { createPinia } from 'pinia' i ...
- 树莓派4B 关闭休眠,关闭屏保
1.安装 sudo apt install xscreensaver 2.打开xscreensaver sudo xscreensaver-demo 3.设置 参考:https://zhuanlan. ...
- Docker目录汇总
Docker目录汇总 Docker资料分享 Docker 教程 | 菜鸟教程 Docker入门级简易手册 Docker - 从入门到实践 Kubernetes中文手册 Kubernetes 指南 我的 ...
- 查看MySQL数据库所有的表名、表注释、字段名称、类型、长度、备注,一键导出生成数据库字典
一.先了解下INFORMATION_SCHEMA1.在MySQL中,把INFORMATION_SCHEMA看作是一个数据库,确切说是信息数据库.其中保存着关于MySQL服务器所维护的所有其他数据库的信 ...
- Qt/C++路径轨迹回放/回放每个点信号/回放结束信号/拿到移动的坐标点经纬度
一.前言说明 在使用百度地图的路书功能中,并没有提供移动的信号以及移动结束的信号,但是很多时候都期望拿到移动的哪里了以及移动结束的信号,以便做出对应的处理,比如结束后需要触发一些对应的操作.经过搜索发 ...
- Qt编写跨平台视频监控系统(64通道占用7%CPU/支持win_linux_mac等)
一.前言 视频监控组件经历过数十年的迭代,从最初的只简单播放个rtsp视频流,到现在支持各种音频视频文件格式(mp3.wav.mp4.asf.rm.rmvb.mkv等).支持各种视频流格式(rtp.r ...