• 一个数据驱动的高效 dotnet PDF 开源工具库


    一个数据驱动的高效 dotnet PDF 开源工具库

    简介

    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 页面如下所示:

    一个数据驱动的高效 dotnet PDF 开源工具库

     

    数据驱动

    QuestPDF 的核心设计思想是数据驱动,建议的 PDF 生成方式将 生成过程分为三个层面。首先是文档模型,这就是一个普通的类,用以描述生成特定文档结构所需的数据信息。然后是数据源,比如存储在数据库中的发票、订单和地址数据。有了文档和数据源,还需要提供一个模板层,用于将数据转化为指定视觉样式的 PDF 文档。怎么样,很像 MV** 编程模型吧,同样的数据源通过不同的模板就可以转化为不同的 PDF 页面,非常适合企业根据不同信息快速生成各种各样的 PDF 报表。因为代码比较长,文章贴不下,这里提供一个官方网站提供的发票订单 PDF 样例页面。

    一个数据驱动的高效 dotnet PDF 开源工具库

     

    当然,也可以生成更加复杂漂亮的页面。

    一个数据驱动的高效 dotnet PDF 开源工具库

     

    缺点

    正如项目介绍中所说,QuestPDF 布局引擎不依赖于 Html。这是优点,也是缺点,因为根据 HTML 和 CSS 样式生成 PDF 是一个非常高频的需求,现阶段 QuestPDF 对 Html 的支持并不够好。其实这应该是可以解决的问题,通过编写 HTML 元素到 QuestPDF 布局规则的转换库。但项目目前还比较年轻,暂时官方或者第三方的功能插件还比较少。总之,笔者认为若需要基于大量企业数据自动生成简单大方的 PDF 文档,这个库非常赞。但若需求是通过 Html 生成 PDF 文件,则暂时还无法胜任,除非你们的团队能自行编写相关的功能插件。

    Quest PDF 项目地址:
    https://github.com/QuestPDF/QuestPDF

    本文 Gitee 仓库地址:OpenSourceProjects: 推荐好用的开源项目 - Gitee.com

  • 相关阅读:
    python实现RSA加密解密方法
    信息安全-2:python之hill密码算法[原创]
    信息安全-4:公钥密码体制之背包算法[原创]
    python之import子目录文件
    python之路径导入
    python之局部变量引用赋值前的结果
    python之socket-ssh实例
    python之面向对象与构造函数
    git搜索--grep
    git日志--log
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/16255044.html
Copyright © 2020-2023  润新知