国产化PDF处理控件Spire.PDF教程:在 ASP.NET Core 中创建 PDF的分步指南
在 ASP.NET 应用程序中生成 PDF 是一个常见需求——无论是生成发票、报告、表单,还是导出动态内容。与其依赖复杂的 PDF API 或第三方打印驱动程序,不如使用 Spire.PDF for .NET,这是一款专业且轻量级的库,能够让开发人员以编程方式创建和操作 PDF 文档。
在本教程中,我们将演示如何在 ASP.NET Core Web 应用程序中使用 Spire.PDF for .NET 生成 PDF 文档,包括从零创建 PDF 以及将 HTML 转换为 PDF 的示例。
Spire.PDF for .NET
为什么选择 Spire.PDF for .NET?
Spire.PDF 是一款专为开发人员设计的 .NET PDF 库,能够快速、可靠地处理 PDF 功能。其主要优势包括:
- 无需依赖 Adobe —— 独立运行,无需安装 Acrobat。
- 全面的 PDF 控制 —— 可创建、读取、编辑、合并、拆分或保护 PDF。
- 高质量渲染 —— 保留布局、字体、CSS 和图像。
- 支持 ASP.NET 与 ASP.NET Core —— 兼容 Web Forms 和 MVC。
- 灵活的生成方式 —— 可从零创建 PDF,或基于 HTML、图像、流生成。
分步教程:在 ASP.NET Core Web 应用中生成 PDF
第一步:创建新的 ASP.NET Core Web 应用
- 打开 Visual Studio。
- 选择 创建新项目 (Create a new project) 。
- 选择 ASP.NET Core Web App (Model-View-Controller) → 点击 下一步 (Next) 。
- 输入项目名称,例如: PdfDemoApp 。
- 选择目标框架(例如 .NET 6、7 或 8)。
- 点击 创建 (Create) 。
第二步:通过 NuGet 安装 Spire.PDF
- 右键点击项目 → 管理 NuGet 包 (Manage NuGet Packages) 。
- 搜索 Spire.PDF 。
- 安装 Spire.PDF (最新稳定版本)。
或者使用 程序包管理器控制台 (Package Manager Console) 安装:
Install-Package Spire.PDF
第三步:添加 PDF 生成控制器
- 在 Controllers文件夹上右键 → 添加 → 控制器 → MVC 控制器 – 空 (MVC Controller – Empty) 。
- 命名为: PdfController.cs 。
- 将默认代码替换为以下内容:
using Microsoft.AspNetCore.Mvc; using Spire.Pdf; using Spire.Pdf.Graphics; using System.Drawing;namespace PdfDemoApp.Controllers {public class PdfController : Controller{public IActionResult CreatePdf(){// 创建一个新的 PDF 文档PdfDocument doc = new PdfDocument();PdfPageBase page = doc.Pages.Add(PdfPageSize.A4, new PdfMargins(40));// 在页面上绘制文本PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋体", 25f, FontStyle.Regular), true);PdfSolidBrush brush = new PdfSolidBrush(Color.Black);page.Canvas.DrawString("通过 ASP.NET Core 创建 PDF", font, brush, 10, 50);// 保存到内存流using (MemoryStream ms = new MemoryStream()){doc.SaveToStream(ms);doc.Close();ms.Position = 0;// 返回 PDF 文件return File(ms.ToArray(), "application/pdf", "Generated.pdf");}}} }
第四步(可选):在视图中添加按钮或链接
打开 Views/Home/Index.cshtml (或你的首页视图文件)。添加如下按钮或链接:
<div><a asp-controller="Pdf" asp-action="CreatePdf" class="btn btn-primary">从零创建 PDF</a> </div>
这里使用了 ASP.NET Core 的标签帮助器 (Tag Helpers) 来生成正确的路由(/Pdf/CreatePdf)。
效果图:
除了文本之外,Spire.PDF还支持向 PDF 添加多种元素,例如图片、图形、表格、列表、超链接、注释以及水印。
在 ASP.NET Core 中通过 HTML 创建 PDF
Spire.PDF允许将 HTML 内容直接转换为 PDF 文件。此功能特别适用于生成发票、报告、收据,或将带有样式的网页以一致的格式导出为 PDF。
要将 HTML 渲染为 PDF,Spire.PDF 依赖外部渲染引擎。目前可以选择 Qt WebEngine 或 Google Chrome 。在本指南中,我们将使用 Qt WebEngine。
配置 Qt 插件:
- 下载适用于你的操作系统的 Qt WebEngine 插件 :
- Windows x86
- Windows x64
- Linux x64
- Mac x64
-
解压缩安装包,找到 plugins 目录,例如: C:\plugins-windows-x64\plugins
-
在代码中注册插件路径:
HtmlConverter.PluginPath = @"C:\plugins-windows-x64\plugins";
插件准备好后,你就可以参考前面步骤,在控制器中添加以下代码片段,从 HTML 内容生成 PDF 输出。
using Microsoft.AspNetCore.Mvc; using Spire.Additions.Qt; using Spire.Pdf.Graphics; using System.Drawing;namespace PdfDemoApp.Controllers {public class HtmlToPdfController : Controller{[HttpGet]public IActionResult HtmlToPdf(){// 示例 HTML 字符串string html = @"<html><head><style>body { font-family: Arial, sans-serif; }h1 { color: #2563eb; }</style></head><body><h1>ASP.NET Core:从 HTML 创建 PDF</h1><p>此 PDF 使用基于 Qt 的转换器生成。</p></body></html>";// Qt 插件文件夹路径// ⚠️ 确保该文件夹在服务器或部署环境中存在string pluginPath = @"C:\plugins-windows-x64\plugins";HtmlConverter.PluginPath = pluginPath;// 创建临时文件路径(在服务器端)string tempFile = Path.GetTempFileName();// 使用 Qt 将 HTML 字符串转换为 PDFHtmlConverter.Convert(html,tempFile,enableJavaScript: true,timeout: 100000, // 超时时间,毫秒pageSize: new SizeF(595, 842), // A4 页面大小(点)margins: new PdfMargins(40), // 40pt 边距LoadHtmlType.SourceCode // 从 HTML 字符串加载);// 将生成的 PDF 读取到内存byte[] fileBytes = System.IO.File.ReadAllBytes(tempFile);// 清理临时文件System.IO.File.Delete(tempFile);// 将 PDF 返回到浏览器进行下载return File(fileBytes, "application/pdf", "HtmlToPdf.pdf");}} }
效果图:
此示例将行内 HTML 转换为格式准确的 PDF。
ASP.NET 生成 PDF 的最佳实践
- 使用 内存流 (MemoryStream)替代磁盘存储,以提升性能和可扩展性。
- 对静态 PDF(如条款与条件、表单等)进行 缓存 ,以减少服务器负载。
- 对带有 CSS 样式的动态报表 ,使用 HTML 转 PDF 的方式生成。
- 当文档包含复杂布局时,可以考虑使用 模板 (如通过 Spire.Doc 将 Word 转换为 PDF)。
- 使用 密码保护或访问权限 来保障敏感 PDF 的安全性。
总结
借助 Spire.PDF for .NET,你可以轻松在 ASP.NET Core 应用程序中生成 PDF 。无论是从零开始创建 PDF,还是在 C# 中进行 HTML 转 PDF 转换,Spire.PDF 都能提供可靠、对开发者友好的解决方案 —— 无需任何外部依赖。
如果你还需要通过 Word 文档生成 PDF,可以使用 Spire.Doc for .NET ,这是 Spire 系列的另一款产品。两者结合使用,可以覆盖 PDF 文档生成的完整场景 。
通过集成这些工具,开发者能够简化工作流程,减少对 Adobe 或其他第三方组件的依赖,并确保输出文档的一致性与专业质量。这将使你的 ASP.NET PDF 解决方案更具 可扩展性、可维护性 ,并适用于企业级应用。
常见问题解答(FAQs)
Q1. 服务器上需要安装 Adobe Acrobat 吗?
不需要。Spire.PDF 是独立的库,可以完全脱离 Adobe Acrobat 使用。
Q2. 我可以使用 Spire.PDF 将 Word 文档转换为 PDF 吗?
不可以。Word 转 PDF 功能由 Spire.Doc for .NET 提供,而不是 Spire.PDF。如果项目需要,你可以将两者结合使用。
Q3. 如何保护生成的 PDF?
Spire.PDF 支持为 PDF 设置密码、权限和数字签名,以保障文档安全。
Q4. Spire.PDF 是否支持 ASP.NET Framework?
支持。它既能在 ASP.NET Core中使用,也兼容 ASP.NET Framework 。