QuestPDF 是一个用于生成 PDF 文件的 .NET 库,它提供了一个简洁的 API 和灵活的布局选项,使得在 .NET 应用程序中创建 PDF 文件变得更加简单。
支持多平台,支持的功能有
第一步,老规矩,先安装
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.Settings.License = LicenseType.Community;
。