1. 产品
  2.   PDF格式
  3.   .NET
  4.   QuestPDF
 
  

用于 PDF 文档处理的免费 .NET API

用于创建、编辑、加载和操作 PDF 的开源 .NET 库。向 PDF 文件添加新页面、表格、图像、文本和形状。

QuestPDF 是一个非常有用的开源现代 .NET 库,它允许软件开发人员轻松生成、阅读、修改和操作 PDF 文档。该库功能非常丰富,并提供在设计时充分考虑了分页支持的布局引擎。该库非常容易处理,肯定可以加快您的开发生命周期。该库支持热重载功能,这意味着它可以为开发人员提供实时结果,而无需重新编译代码。

QuestPDF 库非常流畅,只需几行代码即可轻松创建、自定义和管理一些最复杂的文档。该库还有几个其他功能,例如绘制简单文本、使用自定义样式绘制文本、分页支持、自定义字体支持、字母间距、自定义段落间距、Unicode 支持、插入图像、管理图像的纵横比、渲染边框、插入超链接、内容和图像旋转等。

Previous Next

QuestPDF 入门

QuestPDF 库以 nuget 包的形式提供。因此强烈推荐使用 NuGet 将 QuestPDF 安装到您的项目中。请使用以下命令安装成功。

从 Nuget 安装 QuestPDF

// Package Manager
Install-Package QuestPDF
// .NET CLI
dotnet add package QuestPDF
// Package reference in .csproj file

您也可以手动安装它;直接从 GitHub 存储库下载最新版本文件。

通过 .NET 库轻松创建 PDF

开放源代码 PDF 库 QuestPDF 使软件开发人员能够使用几个简单的 .NET 代码命令在他们自己的应用程序中创建 PDF 文档。该库使开发人员可以轻松定义页面大小、边距、背景颜色、文本样式、字体大小、页眉和页脚、页面内容、间距等。更新您现有的 PDF 文件也非常容易。

通过 .NET 库创建 PDF 文件

 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.PageColor(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");

通过 C# API 管理文本和格式

QuestPDF 库提供了几个重要的功能来处理 PDF 文档中的文本插入和文本绘制。它使开发人员能够使用默认样式以及自定义样式、下标和上标绘制文本、调整文本行、调整字母间距、字体对齐、设置排版模式、自定义段落间距、设置文本方向、插入页码、添加超链接等上。

通过 .NET 库的 PDF 文件中的下标和上标

 .Text(text =>
{
    text.DefaultTextStyle(x => x.FontSize(20));
    text.ParagraphSpacing(10);
    var highlight = TextStyle.Default.BackgroundColor(Colors.Green.Lighten3);
    text.Span("E=mc").Style(highlight);
    text.Span("2").Superscript().Style(highlight);
    text.Span(" is the equation of mass–energy equivalence.");
    text.EmptyLine();
    text.Span("H").Style(highlight);
    text.Span("2").Subscript().Style(highlight);
    text.Span("O").Style(highlight);
    text.Span(" is the chemical formula for water.");
}); 

通过 C# 库添加和管理 PDF 中的图像

开源 PDF 库 QuestPDF 包含对在 C# .NET 应用程序中添加静态和动态图像的完整支持。软件开发人员可以轻松地将任何常见光栅图像格式(如 JPG、PNG、BMB 等)的静态图像放入 PDF 文档中。对于动态图像,它提供灵活的布局,因此很难预测图像分辨率。为获得最佳图像清晰度,建议生成具有指定分辨率的图像。它对于创建地图/图表非常有用。

通过 .NET 库将图像添加到 PDF

 // it is possible to provide an image as:
// 1) a binary array
byte[] imageData = File.ReadAllBytes("path/to/logo.png")
container.Image(imageData)
// 2) a fileName
container.Image("path/myFile.png")
// 3) a stream
using var stream = new FileStream("logo.png", FileMode.Open);
container.Image(stream); 

通过 C# API 在 PDF 中插入表格

QuestPDF 使计算机程序员能够实现比 Row 和 Column 元素的任何组合更复杂的结构。要创建一个简单的表格实例,用户需要描述每列的宽度,然后在其中放置任意数量的行和列。该库支持添加表头或页脚、添加新行、插入新单元格、删除单元格、行跨度和列跨度、重叠单元格等功能。

通过 .NET 库在 PDF 文件中创建简单表格

 .Border(1)
.Table(table =>
{
    table.ColumnsDefinition(columns =>
    {
        columns.RelativeColumn();
        columns.RelativeColumn();
        columns.RelativeColumn();
        columns.RelativeColumn();
    });
    // by using custom 'Element' method, we can reuse visual configuration
    table.Cell().Row(1).Column(4).Element(Block).Text("A");
    table.Cell().Row(2).Column(2).Element(Block).Text("B");
    table.Cell().Row(3).Column(3).Element(Block).Text("C");
    table.Cell().Row(4).Column(1).Element(Block).Text("D");
    // for simplicity, you can also use extension method described in the "Extending DSL" section
    static IContainer Block(IContainer container)
    {
        return container
            .Border(1)
            .Background(Colors.Grey.Lighten3)
            .ShowOnce()
            .MinWidth(50)
            .MinHeight(50)
            .AlignCenter()
            .AlignMiddle();
    }
});
 中国人