在 ASP.NET 中将 ASPX 页转换为 PDF

This article was translated from English: Does it need improvement?
Translated
View the article in English

本 ASPX 转 PDF 教程将逐步指导您如何将 ASPX 转换为 PDF。在 ASP.NET 网络应用程序中将 ASPX 页面保存为 PDF。

用户无需在 Google Chrome 浏览器中打开带有 .aspx 文件扩展名的 ASPX 文件。我们要求工程团队使用 .NET 代码将 ASPX 自动转换为 PDF! 我们从来不需要按 CTRL P! 有一种基于服务器的方法可以转换 ASPX 互联网媒体并保存为 PDF。

应用设置包括设置文件行为和名称、添加页眉和页脚、更改打印选项、添加分页符、结合异步和多线程等。

如何将 ASPX 文件转换为 PDF

ASP.NET 的 Microsoft Web 表单应用程序通常用于开发复杂的网站、网上银行、内联网和会计系统。ASP.NET 的一个共同特点是 (ASPX) 网站是为了生成动态 PDF 文件,如发票、票据或管理报告,供用户下载 PDF 格式的文件。

本教程展示了如何使用 .NET 的 IronPDF 软件组件将任何 ASP.NET 网页表单转化为 PDF 文件。 (ASP.NET 转 PDF).通常渲染为网页的 HTML 将被用于渲染为 PDF,以供下载或在网络浏览器中查看。所附源代码项目将向您展示如何在 ASP.NET 中使用 C# 将网页转换为 PDF。

我们实现 HTML 到 PDF 的转换 (将 ASPX 转换为 PDF) 在使用 IronPDF 及其 AspxToPdf 工具类。

1. 从 IronPDF 安装 ASPX 文件转换器免费版

适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

开始在您的项目中使用IronPDF,并立即获取免费试用。

第一步:
green arrow pointer

查看 IronPDFNuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变PDF。

适用于PDF的C# NuGet库 nuget.org/packages/IronPdf/
Install-Package IronPdf

考虑安装 IronPDF DLL 直接。下载并手动安装到您的项目或GAC表单中: IronPdf.zip

手动安装到你的项目中

下载DLL

通过 NuGet 安装

在 Visual Studio 中,右键单击项目解决方案资源管理器,选择 "管理 NuGet 包..."。然后搜索 IronPDF 并安装最新版本......在出现的对话框中点击确定。

这将适用于 Framework 4.6.2 及以上版本或 .NET Core 2 及以上版本的任何 C# .NET Framework 项目。 在 VB.NET 项目中也同样有效。

Install-Package IronPdf

https://www.nuget.org/packages/IronPdf

通过 DLL 安装

另外,也可以从以下地址下载 IronPDF DLL 并手动安装到项目或 GAC 中 https://ironpdf.com/packages/IronPdf.zip

请记住,在任何使用 IronPDF 的 cs 类文件的顶部添加此语句:


使用 IronPdf;

2.将 ASP.NET 网页转换为 PDF

我们从一个普通的 ASPX "Web表单 "开始,该表单渲染为HTML。 随后,我们将 ASPX 页面转换为 PDF 文件格式。

在所附的示例源代码中,我们渲染了一张商业发票 "Invoice.aspx",这是一张以 ASP.NET 页面形式渲染的简单 HTML 商业发票。

HTML 页面包含 CSS3 样式表,还可能包含图片和 javascript。

要将此 ASP.NET 网页渲染为 PDF 而不是 HTML,我们需要打开 C# (或VB.NET) 代码,并将其添加到 Page_Load 事件中:

:path=/static-assets/pdf/content-code-examples/how-to/aspx-to-pdf-1.cs
IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser);
IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser)
VB   C#

这就是全部要求;HTML 现在可以渲染成 PDF。超链接、样式表、图片甚至 HTML 表单都会保留。这与用户自己在浏览器中将 HTML 打印成 PDF 的输出结果非常相似。IronPDF 基于谷歌 Chrome 浏览器的 Chromium 网络浏览器技术。

整个 C# 代码全文如下:在 Active Server Pages 中将 ASPX 页面转换为 PDF。

:path=/static-assets/pdf/content-code-examples/how-to/aspx-to-pdf-2.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using IronPdf;

namespace AspxToPdfTutorial
{
    public partial class Invoice : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser);
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports IronPdf

Namespace AspxToPdfTutorial
	Partial Public Class Invoice
		Inherits System.Web.UI.Page

		Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
			IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser)
		End Sub
	End Class
End Namespace
VB   C#

3.将 ASPX 文件应用于 PDF 转换器设置

当我们将 ASPX 文件转换为使用 .NET Web Forms 生成的 PDF 时,有很多选项可以调整和完善。

这些选项的完整在线文档如下 应用程序接口参考页面.

3.1.设置 PDF 文件行为

"浏览器"文件行为试图在用户浏览器中直接显示 PDF。 并非每个网络浏览器都能做到这一点,但这通常是符合标准的现代浏览器的常见功能。


IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser);

"附件"文件行为会导致下载 PDF。


IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment);

3.2.设置 PDF 文件名

我们还可以通过添加附加参数来设置 PDF 文档的文件名。这意味着当用户决定下载或保留文件时,我们可以控制文件名。当我们将 ASPX 页面保存为 PDF 时,PDF 文档也将使用这个名称。


IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "Invoice.pdf");

3.3.更改 PDF 打印选项

我们可以通过添加 IronPdf.ChromePdfRenderer 类的实例来控制 PDF 的输出。 ChromePdfRenderer API 参考

:path=/static-assets/pdf/content-code-examples/how-to/aspx-to-pdf-3.cs
var AspxToPdfOptions = new IronPdf.ChromePdfRenderOptions()
{
    EnableJavaScript = false,
    //.. many more options available
};
IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "Invoice.pdf", AspxToPdfOptions);
Dim AspxToPdfOptions = New IronPdf.ChromePdfRenderOptions() With {.EnableJavaScript = False}
IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "Invoice.pdf", AspxToPdfOptions)
VB   C#

可用的 PDF 渲染选项包括

  • CreatePdfFormsFromHtml 将 ASPX 表单元素转化为可编辑的 PDF 表单。
  • CssMediaType ScreenPrint CSS 样式和样式表。请参阅我们的 附带对比图片的全面深入教程.
  • CustomCssUrl 允许在渲染前将自定义 CSS 样式表应用于 HTML。可以是本地文件路径,也可以是远程 URL。
  • EnableMathematicalLaTex 启用或禁用数学 LaTeX 元素的渲染。
  • EnableJavaScript 启用在页面渲染前执行 JavaScript 和 JSON 的功能。非常适合从 Ajax / Angular 应用程序中打印。 另请参见 WaitFot.
  • Javascript 指定一个自定义 JavaScript 字符串,该字符串将在加载所有 HTML 之后、PDF 渲染之前执行。
  • JavaScriptMessageListener浏览器 JavaScript 控制台消息可用时调用的方法回调。
  • FirstPageNumber 页眉页脚的第一个页码。 默认为 1。
  • TableOfContents 在 HTML 文档中找到 id 为 "ironpdf-toc "元素的位置生成目录。
  • TextHeader 将每个 PDF 页面的页脚内容设置为文本。支持 "邮件合并",并自动将网址转化为超链接。
  • TextFooter 将每个 PDF 页面的页眉内容设置为文本。支持 "邮件合并",并自动将网址转换为超链接。
  • HtmlHeader 使用内容字符串或 HTML 为每个 PDF 页面设置页眉内容。
  • HtmlFooter 使用内容字符串或 HTML 为每个 PDF 页面设置页脚内容。
  • MarginBottom PDF 纸张底边距,单位为毫米。如果是无边框 PDF,则设置为零。
  • MarginLeft PDF 纸张左边距,单位为毫米。对于无边框 PDF,设置为零。
  • MarginRight PDF 纸张右边距,单位为毫米。对于无边框 PDF,设置为零。
  • MarginTop PDF 文档顶部页边距,单位为毫米。对于无边框 PDF,设置为零。
  • UseMarginsOnHeaderAndFooter 指定在渲染页眉和页脚时是否使用主文档中的页边距值。
  • PaperFit:用于设置虚拟纸张布局的管理器,可控制内容在 PDF "纸张 "页面上的布局方式。包括默认 Chrome 浏览器行为、缩放、响应式 CSS3 布局、缩放至页面和连续供稿式 PDF 页面设置选项。
  • PaperOrientation PDF 纸张方向。 横向纵向
  • PageRotation 从现有文档中旋转页面。 完整解释和附带代码示例.
  • PaperSize 使用 System.Drawing.Printing.PaperKind.PageSize 设置 PDF 页面的输出纸张大小。
  • SetCustomPaperSizeinCentimeters 以厘米为单位设置纸张大小。
  • SetCustomPaperSizeInInches 以英寸为单位设置纸张大小。
  • 以毫米为单位设置自定义纸张尺寸 以毫米为单位设置纸张尺寸。
  • SetCustomPaperSizeinPixelsOrPoints以屏幕像素或打印机点为单位设置纸张大小。
  • ForcePaperSize 指定从 HTML 生成 PDF 后,是否通过调整页面大小来强制页面大小与通过 PaperSize 指定的完全一致。
  • PrintHtmlBackgrounds 打印 HTML 图像背景。
  • GrayScale 输出灰度而非全彩的 PDF 文件。
  • WaitFor 一个封装对象,用于保存等待机制的配置。在考虑 JavaScript、Ajax 或动画的渲染时,这很有用。

    • PageLoad:默认呈现,无需等待。

    • RenderDelay:设置任意等待时间。

    • 字体:等待所有字体加载完毕。

    • JavaScript:使用 JavaScript 函数触发渲染:使用 JavaScript 函数触发渲染。

    • HTML 元素:等待特定的 HTML 元素,如元素 ID、名称、标记名称和目标元素的查询选择器。
  • NetworkIdle:等待网络空闲 (0、2 或自定义数量).
  • 标题 PDF 文档 "标题 "元数据。
  • InputEncoding 输入字符编码字符串。 ASP.NET 默认使用 UTF-8.
  • RequestContext 指定呈现的请求上下文。

  • Timeout.渲染超时,以秒为单位。

4.为 ASPX PDF 添加页眉和页脚

使用 IronPDF,可以在 PDF 输出中添加页眉和页脚。

最简单的方法是使用 TextHeaderFooter 类,该类支持基本布局,可轻松添加当前时间和页码等动态数据。

4.1.ASPX 转换为 PDF 的页眉和页脚示例

:path=/static-assets/pdf/content-code-examples/how-to/aspx-to-pdf-4.cs
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace AspxToPdfTutorial
{
    public partial class Invoice : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var AspxToPdfOptions = new IronPdf.ChromePdfRenderOptions()
            {
                TextHeader = new IronPdf.TextHeaderFooter()
                {
                    CenterText = "Invoice",
                    DrawDividerLine = false,
                    Font = FontTypes.Arial,
                    FontSize = 12
                },
                TextFooter = new IronPdf.TextHeaderFooter()
                {
                    LeftText = "{date} - {time}",
                    RightText = "Page {page} of {total-pages}",
                    Font = IronSoftware.Drawing.FontTypes.Arial,
                    FontSize = 12,
                },
            };
            IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "Invoice.pdf", AspxToPdfOptions);
        }
    }
}
Imports IronSoftware.Drawing
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

Namespace AspxToPdfTutorial
	Partial Public Class Invoice
		Inherits System.Web.UI.Page

		Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
			Dim AspxToPdfOptions = New IronPdf.ChromePdfRenderOptions() With {
				.TextHeader = New IronPdf.TextHeaderFooter() With {
					.CenterText = "Invoice",
					.DrawDividerLine = False,
					.Font = FontTypes.Arial,
					.FontSize = 12
				},
				.TextFooter = New IronPdf.TextHeaderFooter() With {
					.LeftText = "{date} - {time}",
					.RightText = "Page {page} of {total-pages}",
					.Font = IronSoftware.Drawing.FontTypes.Arial,
					.FontSize = 12
				}
			}
			IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "Invoice.pdf", AspxToPdfOptions)
		End Sub
	End Class
End Namespace
VB   C#

另外,我们还可以使用 HtmlHeaderFooter 类生成 HTML 页眉和页脚,该类还支持 CSS、图像和超链接。

:path=/static-assets/pdf/content-code-examples/how-to/aspx-to-pdf-5.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace AspxToPdfTutorial
{
    public partial class Invoice : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var AspxToPdfOptions = new IronPdf.ChromePdfRenderOptions()
            {
                MarginTop = 50, // make sufficiant space for an HTML header
                HtmlHeader = new IronPdf.HtmlHeaderFooter()
                {
                    HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
                }
            };
            IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "MyDocument.pdf", AspxToPdfOptions);
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

Namespace AspxToPdfTutorial
	Partial Public Class Invoice
		Inherits System.Web.UI.Page

		Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
			Dim AspxToPdfOptions = New IronPdf.ChromePdfRenderOptions() With {
				.MarginTop = 50,
				.HtmlHeader = New IronPdf.HtmlHeaderFooter() With {.HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"}
			}
			IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "MyDocument.pdf", AspxToPdfOptions)
		End Sub
	End Class
End Namespace
VB   C#

正如我们在示例中看到的,我们可以使用占位符将动态文本或 HTML "合并 "到页眉/页脚中:

  • {页码}页码:PDF 文件的当前页码。
  • {总页数}即 PDF 文件的总页数。
  • {网址}:渲染 PDF 文档的 Web URL。
  • {日期}日期:以适合服务器系统环境的格式显示今天的日期。
  • {时间}时间:使用 24 小时时钟,单位为小时:秒。
  • {html-title}标题:从 ASPX 网页表单的 head 标签中插入标题。

  • {pdf标题}文件名称。

5.将 ASPX 文件应用于 PDF 的技巧:分页符

HTML 通常 "流动 "成一个长页,而 PDF 则是模拟数字纸张,并分割成一致的页面。在 ASPX 页面中添加以下代码将自动在 .NET 生成的 PDF 中创建分页符。

:path=/static-assets/pdf/content-code-examples/how-to/aspx-to-pdf-6.cs
<div style='page-break-after: always;'>&nbsp;</div>
HTML

6.结合异步和多线程以提高性能

IronPDF 是为 .NET Framework 4.6.2 或 .NET Core 2 或更高版本构建的。在 Framework 4.6.2 或以上版本的项目中、 ASYNC 可用于提高处理多个文件时的性能。

将 Async 与多线程 CPU 和 Paralllel.ForEach 命令相结合,将大大改进批量 PDF 格式处理。

7.下载 ASP.NET 源代码

本教程的ASPX 文件到 PDF 转换器源代码可作为压缩的 Visual Studio Web 应用程序项目下载。

将本教程下载为 ASP.NET Visual Studio 项目

免费下载包含一个 C# ASP.NET Web 窗体项目的工作代码示例,该示例显示了应用设置后渲染为 PDF 的网页。希望本教程能帮助您了解如何将 ASPX 文件保存为 PDF。

向前迈进

一般来说,学习任何编程技术的最佳途径是在自己的 ASP.NET 项目中进行实验。这包括尝试 IronPDF 的 ASPX 到 PDF 转换器。

开发人员可能还会对 IronPdf.AspxToPdf 类 参考文献

8.观看 ASPX 转 PDF 视频教程


教程快速访问

下载本教程的源代码

本教程的完整 ASPX 文件到 PDF 转换器源代码以压缩的 Visual Studio Web 应用程序项目的形式提供。 免费下载包含 C# ASP.NET Web 窗体项目的工作代码示例,显示了应用设置后渲染为 PDF 的网页。

下载

在 GitHub 上探索此教程

此 C# ASPX-To-PDF 项目的代码以 C# 和 VB.NET 作为 ASP.NET 网站项目发布在 GitHub 上。请继续在 Github 上 fork 我们,以获得更多使用 IronPDF 的帮助。如果有人问 "如何将 ASPX 转换为 PDF?

C# ASPX 转 PDF 网站项目 用 C# 创建 PDF 的高级 ASP.NET Page to PDF 示例 用 VB.NET 创建 PDF 的 ASP.NET PDF 示例

下载 C# PDF Quickstart guide

为了使您在.NET应用程序中开发 PDF 更容易,我们将快速入门指南编译成 PDF 文档。这份 "小抄 "提供了在 C# 和 VB.NET 中快速访问生成和编辑 PDF 的常用函数和示例,有助于节省您在.NET 项目中开始使用 IronPDF 的时间。

下载

查看应用程序接口参考

探索 IronPDF 的 API 参考,其中概述了 IronPDF 的所有功能、命名空间、类、方法字段和枚举的详细信息。

查看应用程序接口参考