QuestPDF
是一个开源的PDF
文档工具库。与其它 PDF
工具库不同, QuestPDF
的实现不依赖于 Html
转换,作者认为从 Html
生成 PDF
不够可靠和精确,因此实现了一个自由的全面分页支持的布局引擎,能够以非常直观的方式将简单的页面元素如边框、背景、图像、文本、填充、表格、网格等组合成复杂的文档结构。
安装通过 nuget
即可
// Package Manager
Install-Package QuestPDF
// .NET CLI
dotnet add package QuestPDF
// Package reference in .csproj file
<PackageReference Include="QuestPDF" Version="2022.3.0" />
QuestPDF
非常注重使用的易用性,API
设计非常简单直观,入门使用很容易。以下是一个简单的示例:
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;
// code in your main method
Document.Create(container =>
{
container.Page(page =>
{
page.Size(PageSizes.A4);
page.Margin(2, Unit.Centimetre);
page.Background(Colors.White);
page.DefaultTextStyle(x => x.FontSize(20));
page.Header()
.Text("Hello PDF!")
.SemiBold().FontSize(36).FontColor(Colors.Blue.Medium);
page.Content()
.PaddingVertical(1, Unit.Centimetre)
.Column(x =>
{
x.Spacing(20);
x.Item().Text(Placeholders.LoremIpsum());
x.Item().Image(Placeholders.Image(200, 100));
});
page.Footer()
.AlignCenter()
.Text(x =>
{
x.Span("Page ");
x.CurrentPageNumber();
});
});
})
.GeneratePdf("hello.pdf");
生成的 PDF
页面如下所示:
QuestPDF
的核心设计思想是数据驱动,建议的 PDF
生成方式将 生成过程分为三个层面。首先是文档模型,这就是一个普通的类,用以描述生成特定文档结构所需的数据信息。然后是数据源,比如存储在数据库中的发票、订单和地址数据。有了文档和数据源,还需要提供一个模板层,用于将数据转化为指定视觉样式的 PDF
文档。怎么样,很像 MV**
编程模型吧,同样的数据源通过不同的模板就可以转化为不同的 PDF
页面,非常适合企业根据不同信息快速生成各种各样的 PDF 报表。
正如项目介绍中所说,QuestPDF
布局引擎不依赖于 Html
。这是优点,也是缺点,因为根据 HTML 和 CSS 样式生成 PDF 是一个非常高频的需求,现阶段 QuestPDF
对 Html
的支持并不够好。其实这应该是可以解决的问题,通过编写 HTML
元素到 QuestPDF
布局规则的转换库。但项目目前还比较年轻,暂时官方或者第三方的功能插件还比较少。总之,笔者认为若需要基于大量企业数据自动生成简单大方的 PDF
文档,这个库非常赞。但若需求是通过 Html
生成 PDF
文件,则暂时还无法胜任,除非你们的团队能自行编写相关的功能插件。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。