在 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?
- 分步教程:在 ASP.NET Core Web 应用中生成 PDF
- 在 ASP.NET Core 中将 HTML 转换为 PDF
- ASP.NET 生成 PDF 的最佳实践
- 总结
- 常见问题解答(FAQs)
为什么选择 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 添加多种元素,例如图片、图形、表格、列表、超链接、注释以及水印。更多详细信息和高级用法,请参阅 Spire.PDF 编程指南。
在 ASP.NET Core 中通过 HTML 创建 PDF
Spire.PDF允许将 HTML 内容直接转换为 PDF 文件。此功能特别适用于生成发票、报告、收据,或将带有样式的网页以一致的格式导出为 PDF。
要将 HTML 渲染为 PDF,Spire.PDF 依赖外部渲染引擎。目前可以选择 Qt WebEngine 或 Google Chrome 。在本指南中,我们将使用 Qt WebEngine。
配置 Qt 插件:
- 下载适用于你的操作系统的 Qt WebEngine 插件 :
解压缩安装包,找到 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 字符串转换为 PDF
HtmlConverter.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。你也可以加载外部 HTML 文件或 URL —— 更多信息请参阅详细指南:在 C# 中将 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 。
申请临时License
如果您需要去除生成文档中的评估提示或解除功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。