国产化PDF处理控件Spire.PDF教程:在 ASP.NET Core 中创建 PDF的分步指南
<p><img src="https://image.evget.com/attachment/keditor/image/20250915/101321_0.png"></p><p>在 ASP.NET 应用程序中生成 PDF 是一个常见需求——无论是生成发票、报告、表单,还是导出动态内容。与其依赖复杂的 PDF API 或第三方打印驱动程序,不如使用 <strong><u>Spire.PDF for .NET</u></strong>,这是一款专业且轻量级的库,能够让开发人员以编程方式创建和操作 PDF 文档。</p>
<p>在本教程中,我们将演示如何在 <strong>ASP.NET Core Web</strong> 应用程序中使用<strong><u> Spire.PDF for .NET</u></strong> <strong>生成 PDF</strong> 文档,包括从零创建 PDF 以及将 HTML 转换为 PDF 的示例。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Spire.PDF for .NET官方试用下载,请联系E-iceblue-Spire官方授权代理商<span style="text-decoration: underline">慧都科技</span></strong></span></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong><em>加入Spire技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。</em></strong></span></p>
<h2>为什么选择 Spire.PDF for .NET?</h2>
<p><strong><u>Spire.PDF</u></strong> 是一款专为开发人员设计的 .NET PDF 库,能够快速、可靠地处理 PDF 功能。其主要优势包括:</p>
<ul>
<li><strong>无需依赖 Adobe</strong> —— 独立运行,无需安装 Acrobat。</li>
<li><strong>全面的 PDF 控制</strong> —— 可创建、读取、编辑、合并、拆分或保护 PDF。</li>
<li><strong>高质量渲染</strong> —— 保留布局、字体、CSS 和图像。</li>
<li><strong>支持 ASP.NET 与 ASP.NET Core</strong> —— 兼容 Web Forms 和 MVC。</li>
<li><strong>灵活的生成方式</strong> —— 可从零创建 PDF,或基于 HTML、图像、流生成。</li>
</ul>
<h2>分步教程:在 ASP.NET Core Web 应用中生成 PDF</h2>
<p><strong>第一步:创建新的 ASP.NET Core Web 应用</strong></p>
<ol>
<li>打开 Visual Studio。</li>
<li>选择 <strong>创建新项目 (Create a new project)</strong> 。</li>
<li>选择 <strong>ASP.NET Core Web App (Model-View-Controller)</strong> → 点击 <strong>下一步 (Next)</strong> 。</li>
<li>输入项目名称,例如: <strong>PdfDemoApp</strong> 。</li>
<li>选择目标框架(例如 .NET 6、7 或 8)。</li>
<li>点击 <strong>创建 (Create)</strong> 。</li>
</ol>
<p><strong>第二步:通过 NuGet 安装 Spire.PDF</strong></p>
<ol>
<li>右键点击项目 → <strong>管理 NuGet 包 (Manage NuGet Packages)</strong> 。</li>
<li>搜索 <strong>Spire.PDF</strong> 。</li>
<li>安装 <strong>Spire.PDF</strong> (最新稳定版本)。</li>
</ol>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Spire.PDF for .NET官方试用下载,请联系E-iceblue-Spire官方授权代理商<span style="text-decoration: underline">慧都科技</span></strong></span></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong><em>加入Spire技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。</em></strong></span></p>
<p>或者使用 <strong>程序包管理器控制台 (Package Manager Console)</strong> 安装:</p>
<pre class="prettyprint highlighter-hljs"><code>Install-Package Spire.PDF</code></pre>
<p><strong>第三步:添加 PDF 生成控制器</strong></p>
<ol>
<li>在 <strong>Controllers</strong>文件夹上右键 → <strong>添加 → 控制器 → MVC 控制器 – 空 (MVC Controller – Empty)</strong> 。</li>
<li>命名为: <strong>PdfController.cs</strong> 。</li>
<li>将默认代码替换为以下内容:</li>
</ol>
<pre class="prettyprint lang-vb highlighter-hljs"><code>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");
}
}
}
}</code></pre>
<p><strong>第四步(可选):在视图中添加按钮或链接</strong></p>
<p>打开 <strong>Views/Home/Index.cshtml</strong> (或你的首页视图文件)。添加如下按钮或链接:</p>
<pre class="prettyprint lang-html highlighter-hljs"><code><div>
<a asp-controller="Pdf" asp-action="CreatePdf" class="btn btn-primary">
从零创建 PDF
</a>
</div></code></pre>
<p>这里使用了 <strong>ASP.NET Core 的标签帮助器 (Tag Helpers)</strong> 来生成正确的路由(/Pdf/CreatePdf)。</p>
<p><strong>效果图:</strong></p>
<p><img src="https://image.evget.com/attachment/keditor/image/20250915/102129_6.png"></p>
<p>除了文本之外,Spire.PDF还支持向 PDF 添加多种元素,例如图片、图形、表格、列表、超链接、注释以及水印。</p>
<h2>在 ASP.NET Core 中通过 HTML 创建 PDF</h2>
<p><strong><u>Spire.PDF</u></strong>允许将 HTML 内容直接转换为 PDF 文件。此功能特别适用于生成发票、报告、收据,或将带有样式的网页以一致的格式导出为 PDF。</p>
<p>要将 HTML 渲染为 PDF,Spire.PDF 依赖外部渲染引擎。目前可以选择 <strong>Qt WebEngine</strong> 或 <strong>Google Chrome</strong> 。在本指南中,我们将使用 Qt WebEngine。</p>
<p><strong>配置 Qt 插件:</strong></p>
<ol>
<li>下载适用于你的操作系统的 <strong>Qt WebEngine 插件</strong> :</li>
</ol>
<ul>
<li>Windows x86</li>
<li>Windows x64</li>
<li>Linux x64</li>
<li>Mac x64</li>
</ul>
<ol>
<li>
<p>解压缩安装包,找到 plugins 目录,例如: C:\plugins-windows-x64\plugins</p>
</li>
<li>
<p>在代码中注册插件路径:</p>
</li>
</ol>
<pre class="prettyprint lang-cs highlighter-hljs"><code>HtmlConverter.PluginPath = @"C:\plugins-windows-x64\plugins";</code></pre>
<p>插件准备好后,你就可以参考前面步骤,在控制器中添加以下代码片段,从 HTML 内容生成 PDF 输出。</p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>using Microsoft.AspNetCore.Mvc;
using Spire.Additions.Qt;
using Spire.Pdf.Graphics;
using System.Drawing;
namespace PdfDemoApp.Controllers
{
public class HtmlToPdfController : Controller
{
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");
}
}
}</code></pre>
<p><strong>效果图:</strong><img src="https://image.evget.com/attachment/keditor/image/20250915/102345_1.png"></p>
<p>此示例将行内 HTML 转换为格式准确的 PDF。</p>
<h2>ASP.NET 生成 PDF 的最佳实践</h2>
<ul>
<li>使用 <strong>内存流</strong> (MemoryStream)替代磁盘存储,以提升性能和可扩展性。</li>
<li>对静态 PDF(如条款与条件、表单等)进行 <strong>缓存</strong> ,以减少服务器负载。</li>
<li>对带有 <strong>CSS 样式的动态报表</strong> ,使用 HTML 转 PDF 的方式生成。</li>
<li>当文档包含复杂布局时,可以考虑使用 <strong>模板</strong> (如通过 Spire.Doc 将 Word 转换为 PDF)。</li>
<li>使用 <strong>密码保护或访问权限</strong> 来保障敏感 PDF 的安全性。</li>
</ul>
<h2>总结</h2>
<p>借助 Spire.PDF for .NET<strong>,你可以轻松在 </strong><strong>ASP.NET Core 应用程序中生成 PDF</strong><strong> 。无论是从零开始创建 PDF,还是在 C# 中进行 HTML 转 PDF 转换,</strong><strong><u>Spire.PDF </u></strong><strong>都能提供可靠、对开发者友好的解决方案 —— 无需任何外部依赖。</strong></p>
<p>如果你还需要通过 Word 文档生成 PDF,可以使用 <strong>Spire.Doc for .NET</strong> ,这是 Spire 系列的另一款产品。两者结合使用,可以覆盖 <strong>PDF 文档生成的完整场景</strong> 。</p>
<p>通过集成这些工具,开发者能够简化工作流程,减少对 Adobe 或其他第三方组件的依赖,并确保输出文档的一致性与专业质量。这将使你的 ASP.NET PDF 解决方案更具 <strong>可扩展性、可维护性</strong> ,并适用于企业级应用。</p>
<h2>常见问题解答(FAQs)</h2>
<h3>Q1. 服务器上需要安装 Adobe Acrobat 吗?</h3>
<p>不需要。<strong><u>Spire.PDF</u></strong> 是独立的库,可以完全脱离 Adobe Acrobat 使用。</p>
<h3>Q2. 我可以使用 Spire.PDF 将 Word 文档转换为 PDF 吗?</h3>
<p>不可以。Word 转 PDF 功能由<u><strong> </strong></u><u><strong>Spire.Doc for .NET</strong></u> 提供,而不是 Spire.PDF。如果项目需要,你可以将两者结合使用。</p>
<h3>Q3. 如何保护生成的 PDF?</h3>
<p>Spire.PDF 支持为 PDF 设置密码、权限和数字签名,以保障文档安全。</p>
<h3>Q4. Spire.PDF 是否支持 ASP.NET Framework?</h3>
<p>支持。它既能在 <strong>ASP.NET Core</strong>中使用,也兼容 <strong>ASP.NET Framework</strong> 。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Spire.PDF for .NET官方试用下载,请联系E-iceblue-Spire官方授权代理商<span style="text-decoration: underline">慧都科技</span></strong></span></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong><em>加入Spire技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。</em></strong></span></p><br><br>
来源:https://www.cnblogs.com/software-Development/p/19092948
頁:
[1]