在 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格式下载。

本教程演示如何使用 IronPDF for .NET 软件组件将任何 ASP.NET 网页表单转换为 PDF。(ASP.NET 转 PDF). HTML通常作为网页呈现,将用于呈现为PDF供下载或在Web浏览器中查看。 附加的源项目将向您展示如何在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并安装最新版本... 点击确定以应对任何弹出的对话框。

这将适用于任何C# .NET Framework项目,从Framework 4.6.2及以上版本,或.NET Core 2及以上版本。 它在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 Form”开始,它渲染为HTML。 我们稍后将 **ASPX页面转换为PDF** 文件格式。

在附带的示例源代码中,我们渲染了一个商业发票"Invoice.aspx",这是一个作为ASP.NET页面渲染的简单HTML商业发票。

HTML页面包含CSS3样式表,可能还包括图像和JavaScript。

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

```cs
:path=/static-assets/pdf/content-code-examples/how-to/aspx-to-pdf-1.cs

这就是所需的全部内容; HTML现在渲染为PDF。 超链接、样式表、图像乃至 HTML 表单都得到了保留。 这与用户在浏览器中将 HTML 打印为 PDF 的输出非常相似。 IronPDF 基于支持 Google 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 转换器设置

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

这些选项在网上有完整的文档。应用程序接口参考页面.

3.1 设置PDF文件行为

InBrowser”文件行为尝试直接在用户的浏览器中显示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 参考](https://ironpdf.com/object-reference/api/IronPdf.ChromePdfRenderer.html)

```cs
:path=/static-assets/pdf/content-code-examples/how-to/aspx-to-pdf-3.cs

可用的PDF渲染选项包括:

  • CreatePdfFormsFromHtml 将 ASPX 表单元素转换为可编辑的 PDF 表单。
  • CssMediaType ScreenPrint CSS样式和样式表。 See our附带对比图片的全面深入教程.
  • CustomCssUrl 允许在渲染前将自定义CSS样式表应用于HTML。 可能是本地文件路径,或者是远程URL。
  • EnableMathematicalLaTex 启用或禁用数学LaTeX元素的渲染。
  • EnableJavaScript 允许在页面渲染之前执行 JavaScript 和 JSON。 适用于从 Ajax / Angular 应用程序打印。 另请查看WaitFot.
  • Javascript 指定在所有HTML加载完毕但在PDF渲染之前执行的自定义JavaScript字符串。
  • JavascriptMessageListener 当浏览器JavaScript控制台消息可用时要调用的方法回调。
  • FirstPageNumber 用于页眉页脚的第一页编号。 默认值为1。
  • TableOfContents 在HTML文档中找到id为“ironpdf-toc”的元素位置生成目录。
  • TextHeader 为每个PDF页面设置页脚内容。 支持“邮件合并”并自动将网址转换为超链接。
  • TextFooter 为每个PDF页面设置页脚文本内容。 支持“邮件合并”并自动将网址转换为超链接。
  • HtmlHeader 设置每个 PDF 页面的标题内容,可以使用内容字符串甚至是 HTML。
  • HtmlFooter 设置每个 PDF 页面底部的内容,可以使用内容字符串或 HTML。
  • MarginBottom PDF纸张下边距,单位为毫米。 设置为零以创建无边框的pdf。
  • MarginLeft 左侧PDF纸张边距,单位为毫米。 设置为零以创建无边框的pdf。
  • MarginRight PDF纸张右边距,单位为毫米。 设置为零以创建无边框的pdf。
  • MarginTop PDF纸张上边距,单位为毫米。 设置为零以创建无边框的pdf。
  • UseMarginsOnHeaderAndFooter 指定在渲染页眉和页脚时是否使用主文档的边距值。
  • PaperFit:用于设置虚拟纸张布局的管理工具,控制内容在PDF“纸张”页面上的布局方式。 包括默认 Chrome 行为、缩放、响应式 CSS3 布局、按页面缩放和连续供稿样式 PDF 页面设置的选项。
  • 纸张方向 PDF的纸张方向。 横向纵向
  • 页面旋转 从现有文档中进行页面旋转。 完整解释和附带代码示例.
  • PaperSize 使用 System.Drawing.Printing.PaperKind 设置 PDF 页面的输出纸张大小。
  • SetCustomPaperSizeinCentimeters 设置纸张尺寸(厘米)。
  • SetCustomPaperSizeInInches 以英寸设置纸张大小。
  • SetCustomPaperSizeinMilimeters 设置纸张大小为毫米。
  • SetCustomPaperSizeinPixelsOrPoints 设置屏幕像素或打印点的纸张尺寸。
  • ForcePaperSize 指定是否通过在从 HTML 生成 PDF 后调整页面大小,强制页面尺寸与通过 PaperSize 指定的尺寸完全一致。
  • PrintHtmlBackgrounds 打印HTML图像背景。
  • GrayScale 输出灰度PDF,使用灰色阴影而非全彩。
  • WaitFor 一个包含等待机制配置的封装对象。 在考虑渲染JavaScript、Ajax或动画时,这可能会很有用。
    • PageLoad:默认渲染,无需等待。
    • 渲染延迟:设置任意等待时间。
    • 字体:等待所有字体加载完毕。
    • JavaScript:使用 JavaScript 函数触发渲染。
    • HTML元素:等待特定的HTML元素,例如元素ID、名称、标签名称和查询选择器来定位元素。
    • NetworkIdle:等待网络空闲(0、2 或自定义数量).
  • 标题 PDF 文档的“标题”元数据。
  • InputEncoding 输入字符编码作为字符串。 ASP.NET 默认使用 UTF-8.
  • RequestContext 指定渲染的请求上下文。
  • 超时。 渲染超时(秒)。

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

使用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文档的网页URL。
  • {日期}: 以服务器系统环境适当的格式表示今天的日期。
  • {时间}: 以24小时制显示时间(小时:秒)。
  • {html-title}将 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和Parallel.ForEach命令结合使用将显著提高批量PDF格式处理的效率。

7. 下载为ASP.NET源代码

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

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

免费下载包含了一个C# ASP.NET Web Forms项目的工作代码示例,展示了一个网页如何在应用设置后被渲染为PDF。 我们希望本教程帮助您学会了如何将 ASPX 文件保存为 PDF。

向前迈进

通常,学习任何编程技术的最佳方式是在您自己的ASP.NET项目中进行实验。 这包括尝试使用IronPDF的ASPX到PDF转换器。

开发者可能还会对此感兴趣IronPdf.AspxToPdf 类参考文献

8.观看 ASPX 转 PDF 视频教程


教程快速访问

下载本教程的源代码

本教程的完整 ASPX 文件到 PDF 转换器源代码以压缩的 Visual Studio Web 应用程序项目形式提供。 The free download contains working code examples for a C# ASP.NET Web Forms project, showing a web page rendered as a PDF with settings applied.

下载

在 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 的所有功能、命名空间、类、方法字段和枚举的详细信息。

查看应用程序接口参考