前言
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技术匠] 社区,与其他热爱技术的同行一起交换心得,共同发展!优秀是一种风俗,欢迎各人留言学习!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |