全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-690-7320

C#如何实现PDF文件生成 QuestPDF库使用教程

QuestPDF 是 .NET 平台最轻量现代的 PDF 生成库,基于 Fluent API 用 C# 直接描述文档结构,需注册中文字体(如 Noto Sans CJK)以支持中文,安装 via NuGet,.NET 6+ 原生兼容。

c#如何实现pdf文件生成 questpdf库使用教程

用 C# 生成 PDF,QuestPDF 是目前最轻量、现代且易上手的开源库之一。它基于 Fluent API 设计,用 C# 代码直接描述文档结构(类似 HTML + CSS),无需模板引擎或外部依赖,编译即用。

安装 QuestPDF

在项目中通过 NuGet 安装:

  • Visual Studio:右键项目 → “管理 NuGet 包” → 搜索并安装 QuestPDF
  • 命令行:dotnet add package QuestPDF

注意:.NET 6+ 项目可直接使用;若用 .NET Framework,请确认版本兼容性(建议升级至 .NET 6/7/8)。

快速生成一个简单 PDF

以下是最小可运行示例,生成含标题和段落的 PDF:

using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;
<p>// 初始化(只需一次,通常放在 Program.cs 或 Startup)
Document.Create(container =>
{
container.Page(page =>
{
page.Size(PageSizes.A4);
page.Margin(2, Unit.Centimetre);
page.Content().Element(ComposeContent);
});
})
.GeneratePdf("output.pdf");</p><p>void ComposeContent(IContainer container)
{
container
.PaddingVertical(40)
.Column(column =>
{
column.Item().Text("欢迎使用 QuestPDF!").FontSize(24).Bold();
column.Item().Text("这是一个由 C# 代码生成的 PDF 文档。").FontSize(14);
});
}

运行后会在当前目录生成 output.pdf。关键点:

  • Document.Create 定义整个文档
  • Page 控制页面尺寸、边距、页眉页脚
  • Content() 是主体区域,用 Column/Row/Grid 布局
  • 所有样式(字体、颜色、对齐等)链式调用,直观清晰

常用功能与写法

QuestPDF 支持表格、图片、分页、页码、条件内容等实用特性:

OpenAI Codex OpenAI Codex

可以生成十多种编程语言的工作代码,基于 OpenAI GPT-3 的自然语言处理模型

OpenAI Codex 144 查看详情 OpenAI Codex
  • 表格:用 Table + ColumnsDefinition + Cell 构建,支持自动列宽、跨行跨列
  • 图片:用 .Image(bytes) 或 .Image(path),支持缩放、居中、比例约束
  • 页码:在页脚中用 page.Number() + page.TotalPages(),如 "第 {0} 页,共 {1} 页"
  • 条件渲染:C# 的 if / foreach 可直接嵌入布局逻辑,比如只在数据非空时显示某区块
  • 自定义字体:需先注册(支持 TTF/OTF),再用 .Font(...) 应用,中文需指定支持 Unicode 的字体(如 Noto Sans CJK)

中文支持与字体配置

默认不支持中文,需手动加载中文字体:

// 注册字体(推荐放在程序启动时执行一次)
QuestPDF.Settings.License = LicenseType.Community;
FontManager.RegisterFont(File.ReadAllBytes("NotoSansCJKsc-Regular.otf"));
<p>// 使用时指定字体
.Text("你好,世界!").Font("Noto Sans CJK SC");

推荐字体:

  • 免费可商用:Google 的 Noto Sans CJK(SC/TC/JP/KO 版本按需选)
  • 系统字体(Windows):"Microsoft YaHei" 或 "SimSun",但跨平台部署需谨慎

未正确注册字体时,中文会显示为空白或方块,这是新手最常遇到的问题。

基本上就这些。QuestPDF 上手快、调试直观、扩展性强,适合报表、合同、发票、导出文档等场景。不复杂但容易忽略字体和布局嵌套层级——多看官方 示例库,5 分钟就能写出专业 PDF。

以上就是C#如何实现PDF文件生成 QuestPDF库使用教程的详细内容,更多请关注其它相关文章!


# 可直接  # 广东软文营销推广排名前十  # 南昌红谷滩网站推广公司  # 泰州网站建设思政课教案  # 营销推广月活动启动  # 晋城seo优化案例  # 网站平台推广销售话术  # 青海网站优化效果怎么样  # 哈尔滨网站优化电池流程  # 营销如何去推广销售服务  # 团风自媒体推广网站  # 自然语言  # 这是  # 最轻  # 不规范  # 解决办法  # css  # 链式  # 如何实现  # 放在  # 文档  # .net  # c#  # google  # microsoft  # win  # pdf  # ai  # windows  # go  # html 


相关文章: steam官方网页快速访问 steam账号注册全流程  利用5118提升短视频内容效果_5118短视频关键词优化方法  邮编格式怎么匹配地址_根据邮编格式快速匹配详细地址的技巧  必由学官网快捷入口 必由学网页版在线学习平台  QQ邮箱登录官网首页 腾讯QQ邮箱网页入口  Selenium Python中处理点击后新窗口加载冻结问题的策略与实践  Tabulator表格中精确实现日期时间排序的指南  Python异步编程实践:使用Binance API构建实时交易数据流  苹果手机指南针不准怎么校准 传感器校准方法详解【建议收藏】  抖音网页版平台入口 抖音网页版官网在线访问教程  在FastAPI中利用lifespan与依赖注入高效管理Redis连接池  《燕云十六声》两周内达九百万玩家!位居畅销榜第五  在J*a项目里如何构建对象之间的契约_接口约束的实际落地  J*aScript类型检查_j*ascript代码规范  Composer的 "conflict" 字段有什么用_如何声明不兼容的包以避免依赖冲突  优化大型XML文件解析:基于Python流式处理的内存高效方案  4399网页游戏电脑版全新入口 4399电脑端在线玩指南  搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具  Yandex官网免登录入口_俄罗斯Yandex搜索引擎一键访问  聚水潭ERP登录页面入口 聚水潭ERP官网登录界面  优化 Python 函数中的条件逻辑:解决 if-else 嵌套与参数选择问题  J*aScript井字棋(Tic-Tac-Toe)核心交互逻辑实现教程  谷歌学术网站直达地址 谷歌学术搜索网页版一键进入  CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠  Python类型检查:优化关联可选属性的Mypy推断策略  Python多线程中正确使用sigwait处理SIGALRM信号  12306怎么选座位选到安静区_12306选座安静区域选择策略  Lar*el DB::listen 事件中的查询执行时间单位解析  如何在Promise链中优雅地中断后续then执行  京东单号查询入口_京东快递订单追踪入口  Win10双系统截图高效法 截屏快捷键速记【技巧】  在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明  4399体育竞技小游戏_4399小游戏赛事入口  抓大鹅解压小游戏 抓大鹅摸鱼解压入口  解决Django多数据库/多Schema环境下外键迁移问题  在J*a中如何使用Exception包装底层异常_异常包装与信息传递方法说明  ACG动漫视频网入口 ACG动漫*免费正版观看地址  汽水音乐在线解析 汽水音乐在线解析入口  迅雷下载到U盘速度很慢怎么办_迅雷U盘下载慢优化方法  AO3官方在线访问地址 Archive of Our Own最新镜像合集  C++如何操作注册表_Windows平台下C++读写注册表的API函数详解  html怎么运行外部js文件中的函数_运html外js文件函数法【技巧】  如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧  j*a toString()的覆盖  在J*a里如何理解依赖关系的方向_依赖方向在模块结构中的作用  AngularJS $http POST请求数据传递与Go后端接收实践  Safari浏览器输入栏卡顿如何解决 Safari搜索建议与缓存清理  深入理解Go语言中的指针类型:以*string为例  PHP:从文本中提取带逗号的数字价格教程  c++如何使用chrono库处理时间_c++标准库时间与日期操作 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。