好酒不借 發表於 2025-9-15 14:47:00

国产化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 或第三方打印驱动程序,不如使用&nbsp;<strong><u>Spire.PDF for .NET</u></strong>,这是一款专业且轻量级的库,能够让开发人员以编程方式创建和操作 PDF 文档。</p>
<p>在本教程中,我们将演示如何在&nbsp;<strong>ASP.NET Core Web</strong>&nbsp;应用程序中使用<strong><u>&nbsp;Spire.PDF for .NET</u></strong>&nbsp;<strong>生成 PDF</strong>&nbsp;文档,包括从零创建 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>&nbsp;是一款专为开发人员设计的 .NET PDF 库,能够快速、可靠地处理 PDF 功能。其主要优势包括:</p>
<ul>
<li><strong>无需依赖 Adobe</strong>&nbsp;—— 独立运行,无需安装 Acrobat。</li>
<li><strong>全面的 PDF 控制</strong>&nbsp;—— 可创建、读取、编辑、合并、拆分或保护 PDF。</li>
<li><strong>高质量渲染</strong>&nbsp;—— 保留布局、字体、CSS 和图像。</li>
<li><strong>支持 ASP.NET 与 ASP.NET Core</strong>&nbsp;—— 兼容 Web Forms 和 MVC。</li>
<li><strong>灵活的生成方式</strong>&nbsp;—— 可从零创建 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>选择&nbsp;<strong>创建新项目 (Create a new project)</strong>&nbsp;。</li>
<li>选择&nbsp;<strong>ASP.NET Core Web App (Model-View-Controller)</strong>&nbsp;→ 点击&nbsp;<strong>下一步 (Next)</strong>&nbsp;。</li>
<li>输入项目名称,例如:&nbsp;<strong>PdfDemoApp</strong>&nbsp;。</li>
<li>选择目标框架(例如 .NET 6、7 或 8)。</li>
<li>点击&nbsp;<strong>创建 (Create)</strong>&nbsp;。</li>
</ol>
<p><strong>第二步:通过 NuGet 安装 Spire.PDF</strong></p>
<ol>
<li>右键点击项目 →&nbsp;<strong>管理 NuGet 包 (Manage NuGet Packages)</strong>&nbsp;。</li>
<li>搜索&nbsp;<strong>Spire.PDF</strong>&nbsp;。</li>
<li>安装&nbsp;<strong>Spire.PDF</strong>&nbsp;(最新稳定版本)。</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>或者使用&nbsp;<strong>程序包管理器控制台 (Package Manager Console)</strong>&nbsp;安装:</p>
<pre class="prettyprint highlighter-hljs"><code>Install-Package Spire.PDF</code></pre>
<p><strong>第三步:添加 PDF 生成控制器</strong></p>
<ol>
<li>在&nbsp;<strong>Controllers</strong>文件夹上右键 →&nbsp;<strong>添加 → 控制器 → MVC 控制器 – 空 (MVC Controller – Empty)</strong>&nbsp;。</li>
<li>命名为:&nbsp;<strong>PdfController.cs</strong>&nbsp;。</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>打开&nbsp;<strong>Views/Home/Index.cshtml</strong>&nbsp;(或你的首页视图文件)。添加如下按钮或链接:</p>
<pre class="prettyprint lang-html highlighter-hljs"><code>&lt;div&gt;
    &lt;a asp-controller="Pdf" asp-action="CreatePdf" class="btn btn-primary"&gt;
      从零创建 PDF
    &lt;/a&gt;
&lt;/div&gt;</code></pre>
<p>这里使用了&nbsp;<strong>ASP.NET Core 的标签帮助器 (Tag Helpers)</strong>&nbsp;来生成正确的路由(/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 依赖外部渲染引擎。目前可以选择&nbsp;<strong>Qt WebEngine</strong>&nbsp;或&nbsp;<strong>Google Chrome</strong>&nbsp;。在本指南中,我们将使用 Qt WebEngine。</p>
<p><strong>配置 Qt 插件:</strong></p>
<ol>
<li>下载适用于你的操作系统的&nbsp;<strong>Qt WebEngine 插件</strong>&nbsp;:</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 = @"
                &lt;html&gt;
                  &lt;head&gt;
                  &lt;style&gt;
                      body { font-family: Arial, sans-serif; }
                      h1 { color: #2563eb; }
                  &lt;/style&gt;
                  &lt;/head&gt;
                  &lt;body&gt;
                  &lt;h1&gt;ASP.NET Core:从 HTML 创建 PDF&lt;/h1&gt;
                  &lt;p&gt;此 PDF 使用基于 Qt 的转换器生成。&lt;/p&gt;
                  &lt;/body&gt;
                &lt;/html&gt;";

            // 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>使用&nbsp;<strong>内存流</strong>&nbsp;(MemoryStream)替代磁盘存储,以提升性能和可扩展性。</li>
<li>对静态 PDF(如条款与条件、表单等)进行&nbsp;<strong>缓存</strong>&nbsp;,以减少服务器负载。</li>
<li>对带有&nbsp;<strong>CSS 样式的动态报表</strong>&nbsp;,使用 HTML 转 PDF 的方式生成。</li>
<li>当文档包含复杂布局时,可以考虑使用&nbsp;<strong>模板</strong>&nbsp;(如通过 Spire.Doc 将&nbsp;Word 转换为 PDF)。</li>
<li>使用&nbsp;<strong>密码保护或访问权限</strong>&nbsp;来保障敏感 PDF 的安全性。</li>
</ul>
<h2>总结</h2>
<p>借助&nbsp;Spire.PDF for .NET<strong>,你可以轻松在&nbsp;</strong><strong>ASP.NET Core 应用程序中生成 PDF</strong><strong>&nbsp;。无论是从零开始创建 PDF,还是在 C# 中进行 HTML 转 PDF 转换,</strong><strong><u>Spire.PDF&nbsp;</u></strong><strong>都能提供可靠、对开发者友好的解决方案 —— 无需任何外部依赖。</strong></p>
<p>如果你还需要通过 Word 文档生成 PDF,可以使用&nbsp;<strong>Spire.Doc for .NET</strong>&nbsp;,这是 Spire 系列的另一款产品。两者结合使用,可以覆盖&nbsp;<strong>PDF 文档生成的完整场景</strong>&nbsp;。</p>
<p>通过集成这些工具,开发者能够简化工作流程,减少对 Adobe 或其他第三方组件的依赖,并确保输出文档的一致性与专业质量。这将使你的 ASP.NET PDF 解决方案更具&nbsp;<strong>可扩展性、可维护性</strong>&nbsp;,并适用于企业级应用。</p>
<h2>常见问题解答(FAQs)</h2>
<h3>Q1. 服务器上需要安装 Adobe Acrobat 吗?</h3>
<p>不需要。<strong><u>Spire.PDF</u></strong>&nbsp;是独立的库,可以完全脱离 Adobe Acrobat 使用。</p>
<h3>Q2. 我可以使用 Spire.PDF 将 Word 文档转换为 PDF 吗?</h3>
<p>不可以。Word 转 PDF 功能由<u><strong>&nbsp;</strong></u><u><strong>Spire.Doc for .NET</strong></u>&nbsp;提供,而不是 Spire.PDF。如果项目需要,你可以将两者结合使用。</p>
<h3>Q3. 如何保护生成的 PDF?</h3>
<p>Spire.PDF 支持为 PDF 设置密码、权限和数字签名,以保障文档安全。</p>
<h3>Q4. Spire.PDF 是否支持 ASP.NET Framework?</h3>
<p>支持。它既能在&nbsp;<strong>ASP.NET Core</strong>中使用,也兼容&nbsp;<strong>ASP.NET Framework</strong>&nbsp;。</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]
查看完整版本: 国产化PDF处理控件Spire.PDF教程:在 ASP.NET Core 中创建 PDF的分步指南