首页 > 其他分享 >.NET 工具库高效生成 PDF 文档

.NET 工具库高效生成 PDF 文档

时间:2024-09-26 11:02:51浏览次数:1  
标签:text 生成 文档 QuestPDF PDF NET 文本

前言

QuestPDF 是一个开源 .NET 库,用于生成 PDF 文档。使用了C# Fluent API方式可简化开发、减少错误并提高工作效率。利用它可以轻松生成 PDF 报告、发票、导出文件等。

项目介绍

QuestPDF 是一个革命性的开源 .NET 库,它彻底改变了我们生成 PDF 文档的方式。

QuestPDF 的核心思想在于使用声明式的 C# 代码来描述 PDF 文档的结构和样式。

这种方法与我们使用 HTML 和 CSS 构建网页的方式非常相似,我们能够迅速上手,并轻松创建复杂的 PDF 文档。

 

项目特点

  • 简洁强大的 API:QuestPDF 的 API 设计直观易用,几乎无需查阅文档即可上手。通过一系列流畅的方法链,只需少量代码即可描述复杂的文档结构。
  • 高性能:QuestPDF 在性能方面表现出色,能够快速生成大型文档。即使面对包含数千页的复杂报表,也能轻松应对,这得益于其高效的内部算法和优化的架构。
  • 跨平台支持:应用运行在 Windows、macOS 还是 Linux 上,QuestPDF 都能完美运行。跨平台特性使其在构建云原生应用时尤为突出。
  • 零依赖:不同于其他 PDF 库,QuestPDF 不需要任何外部依赖。无需安装额外字体或使用第三方库,从而大大简化了部署和维护流程。
  • 丰富的元素支持:QuestPDF 支持多种文档元素,包括文本、图像、表格和条形码等。它甚至支持复杂的图表绘制,这样的文档更具表现力。
  • 动态内容与智能分页:QuestPDF 可以处理动态生成的内容,并自动解决分页问题。不再需要担心内容溢出或分页不当的问题。
  • 强大的调试工具:QuestPDF 提供了强大的调试工具,可以快速定位并解决问题。还能可视化地查看文档结构,轻松找出布局错误。

相比传统 PDF 生成库,QuestPDF 简化了 PDF 生成的过程,提供了更好的开发体验和更高的生产力。

项目使用

安装QuestPDF Nuget包

搜索 QuestPDF 包进行安装,具体如下图所示

项目示例

创建一个WebAPI项目,利用QuestPDF快速生成PDF文件。

1、需要在Program添加配置信息

#region QuestPDF设置
// 1、请确保您有资格使用社区许可证,不设置的话会报异常。
Settings.License = LicenseType.Community;
// 2、禁用QuestPDF库中文本字符可用性的检查
Settings.CheckIfAllTextGlyphsAreAvailable = false;
#endregion

默认情况下,使用 QuestPDF 生成 PDF 文档时,它会检查所使用的字体是否支持文本中的所有字符,并在发现不能显示的字符时输出一条警告消息。这个选项可以确保文本中的所有字符都能正确地显示在生成的 PDF 文件中。

2、生成文档控制器代码

/// <summary>
/// 创建PDF文件
/// </summary>
/// <returns></returns>
[HttpGet(Name = "GeneratePdf")]
public IActionResult GeneratePdf()
{
    //创建文档
    var document = CreateDocument();
​
    // 生成PDF文件
    var pdf = document.GeneratePdf();
​
    // 返回文件流
    return File(pdf, "application/pdf", "QuestPDFDemo.pdf");
}

3、运行效果

调用接口生成PDF文档,下载就可以预览,方便快捷,编写方便,大家可以去试试。

部分示例

文本元素

文本元素用于绘制带有默认或自定义样式的文本。文本总是尽可能占用最少的空间。

如果文本字符串很长,该元素可能会占据整个宽度并换行到下一行。元素支持分页。

对于大多数不需要复杂格式化的情况,简化版的文本组件就足够了,如下所示:

.Text("Sample text")
.Text("Red big text").FontColor("#F00").FontSize(24)

当希望在文本字符串中间更改样式、插入页码或包含自定义组件时,请使用"文本块"方法,如下所示:

.Text(text =>
{
    text.Span("This is a normal text, followed by some ");
    text.Span("underlined text.").Underline();
});

静态图像

元素可用于在文档内放置图像。默认情况下,Image 会保持图像的纵横比。图像被加载到一个 SkiaSharp.Image 对象中。

请注意,所有的限制都是继承自 SkiaSharp 的。例如,可用的图像格式可能会因平台而异。

可以使用任何常见的光栅格式的图像,例如 JPG、PNG、BMP 等。

在 C# 中,可以通过以下几种方式提供图像:

byte[] imageData = System.IO.File.ReadAllBytes("path/to/logo.png");
container.Image(imageData);
​
//文件名
container.Image("path/myFile.png");
​
//文件流
using var stream = new System.IO.FileStream("logo.png", System.IO.FileMode.Open);
container.Image(stream);

示例展示如何在 QuestPDF 中加载并使用图像,可以根据实际需求选择最合适的加载方式。

还有很多示例,可以查看文档,进行学习和使用。通过官方文档,可以找到更多关于如何使用 QuestPDF 的详细教程和实例。

文档中不仅包含了基本的用法说明,还提供了高级功能的演示。

项目地址

总结

希望本文能为朋友们在生成PDF方面开发带来帮助。欢迎大家在评论区留言讨论,分享您的经验和建议。

最后

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。

也可以加入微信公众号[DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!优秀是一种习惯,欢迎大家留言学习!

标签:text,生成,文档,QuestPDF,PDF,NET,文本
From: https://www.cnblogs.com/1312mn/p/18429834

相关文章

  • 基于STM32设计的智慧路灯(OneNet)(232)
    文章目录一、前言1.1项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成1.2设计思路1.3项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】项目背景【5】摘要1.4开发工具的选择【1】设备端开发【2】上位机......
  • 基于SpringBoot公共交通管理系统的设计与实现(源码+LW+调试文档)
    目录:程序功能截图:程序部分代码参考:数据库sql:程序技术介绍:后端springboot介绍:mysql介绍:程序论文:​选择我的理由:程序获取:......
  • 基于SpringBoot的蔬菜种植管理系统的设计与实现(源码+LW+调试文档)
    目录:程序功能截图:程序部分代码参考:数据库sql:程序技术介绍:后端springboot介绍:mysql介绍:程序论文:​选择我的理由:程序获取:......
  • 基于SpringBoot大学生二手闲置物品交易系统的设计与实现(源码+LW+调试文档)
    目录:程序功能截图:程序部分代码参考:数据库sql:程序技术介绍:后端springboot介绍:mysql介绍:程序论文:​选择我的理由:程序获取:......
  • .NetCore MySqlException 多线程中(There is already an open DataReader associated w
    问题描述:其实标题只是遇到问题的其中之一,遇到三种异常信息如下:Lockwaittimeoutexceeded;tryrestartingtransaction大概意思:超过锁定等待超时;尝试重新启动事务 ThereisalreadyanopenDataReaderassociatedwiththisConnectionwhichmustbeclosedfirst.大......
  • TPS549B22RVFR线性稳压器原装现货PDF数据手册引脚图功能框图参数
    TPS549B22的说明TPS549B22器件是一款紧凑型单通道降压转换器,具有自适应导通时间D-CAP3模式控制。该器件专为高精度、高效率、快速瞬态响应、易于使用、外部元件较少且空间受限的电源系统而设计。该器件采用全差分感应和TI集成FET,高侧导通电阻为4.1mΩ,低侧导通电阻为......
  • TS5A3166DBVR模拟开关IC芯片原装现货PDF数据手册引脚图功能框图
    TS5A3166的说明TS5A3166器件是一款单刀单掷(SPST)模拟开关,工作电压范围为1.65V至5.5V。此器件具有较低的导通状态电阻。该器件具有出色的总谐波失真(THD)性能和极低的功耗。这些特性使得这款器件适合于便携式音频应用中对于高效率、高电源密度和稳健性的需求。TS......
  • 通过 Docker 和 Kubernetes 部署前后端代码到服务器
    目录通过Docker和Kubernetes部署前后端代码到服务器一、准备工作二、创建Docker镜像三、部署到Kubernetes四、访问应用程序五、总结在现代软件开发中,Docker和Kubernetes已成为部署应用程序的强大工具。它们提供了一种可靠、可扩展和高效的方式来将前后端代......
  • .NET Core 微服务文档教程说明
    说明包含新建微服务工程、注册和发现、熔断、降级、API网关、身份认证、授权、配置中心、分布式事务、事件总线、链路监控、日志中心相关示例代码及架构图。下载地址:点击下载01、新建微服务工程02、注册和发现03、熔断、降级04、API网关05、身份认证、授权06......
  • SSM项目实战II基于SSM的培训机构运营系统(开发文档+数据库+源码)
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者一、前言随着知识经济的兴起,教育培训行业迎来了前所未有的发展机遇。传统培训机构在追求教学质量的同时,也面临着运营管理效率提......