將 ASPX 頁面轉換為 PDF 在 ASP.NET 中

查克尼思·賓
查克尼思·賓
2018年8月28日
已更新 2025年2月17日
分享:
This article was translated from English: Does it need improvement?
Translated
View the article in English

本 ASPX 轉 PDF 教程將指導您逐步了解如何將 ASPX 轉換為 PDF。 將 ASPX 頁面保存為 ASP.NET 網頁應用程序中的 PDF。

使用者絕不應該在 Google Chrome 中打開帶有 .aspx 檔案擴展名的 ASPX 檔案。 我們要求工程團隊使用.NET程式碼自動將ASPX轉換為PDF! 我們從不需要按下 CTRL P!有一種基於伺服器的方法可以將 ASPX 網頁轉換並保存為 PDF。

套用設定,包括設置檔案行為和名稱、添加頁眉和頁腳、更改列印選項、添加分頁符號、結合非同步和多執行緒等。

如何將 ASPX 檔案轉換成 PDF

ASP.NET 的 Microsoft Web Form 應用程式常用於開發複雜的網站、線上銀行、內部網和會計系統。 ASP.NET (ASPX) 網站的一個常見功能是生成動態的 PDF 檔案,如發票、票券或管理報告,以供用戶以 PDF 格式下載。

本教程介紹如何使用IronPDF軟體元件將任何ASP.NET網頁表單轉換為PDF(ASP.NET to PDF)。 HTML 通常呈現為網頁,將用於渲染為 PDF,以便在網頁瀏覽器中下載或查看。 附帶的原始專案將向您展示如何在ASP.NET中使用C#將網頁轉換為PDF。

我們在使用IronPDF及其AspxToPdf Class來渲染網頁時實現這種HTML到PDF的轉換(將ASPX轉換為PDF)。

1. 從 IronPDF 安裝 ASPX 檔案轉換器免費版

立即在您的專案中使用IronPDF,並享受免費試用。

第一步:
green arrow pointer

透過NuGet安裝

在 Visual Studio 中,右鍵點擊您的專案方案總管並選擇「管理 NuGet 套件...」。 從那裡開始搜索 IronPDF 並安裝最新版本... 單擊「確定」以關閉出現的任何對話框。

這適用於任何C# .NET Framework項目,從框架 4.6.2 及以上版本,或.NET Core 2 及以上版本。 它在VB.NET項目中也同樣適用。

Install-Package IronPdf

從NuGet下載IronPDF

透過 DLL 安裝

或者,可以從下載 IronPDF 套件,然後手動將 IronPDF DLL 安裝到專案或 GAC。

記得在使用 IronPDF 的任何 cs 類別檔案的頂部加入此聲明:


使用 IronPdf;

將ASP.NET網頁轉換為PDF

我們從一個正常的ASPX「Web Form」開始,它渲染為HTML。 我們稍後將 ASPX 頁面轉換為 PDF 文件格式。

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

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);

這就是所需的全部內容; 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);
        }
    }
}

3. 應用 ASPX 檔案至 PDF 轉換器設定

在使用 .NET Web Forms 生成的過程中將 ASPX 文件轉換為 PDF 時,有許多選項可以進行調整和完善。

這些選項在IronPDF API 參考手冊中有詳細的線上記錄。

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 參考

: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);

可用的PDF渲染選項包括:

  • CreatePdfFormsFromHtml 將 ASPX 表單元素轉換成可編輯的 PDF 表單。
  • CssMediaType ScreenPrint CSS 樣式和樣式表。 查看我們的完整深入教程及比較圖片
  • CustomCssUrl 允許在渲染之前將自訂 CSS 樣式表應用於 HTML。 可能是本地文件路徑,或遠程URL。
  • EnableMathematicalLaTex 啟用或停用數學 LaTeX 元素的渲染。
  • EnableJavaScript 啟用 JavaScript 和 JSON 在頁面呈現之前執行。 適用於從 Ajax / Angular 應用程式列印。 另請參閱WaitFor 使用指南
  • Javascript 指定自訂的 JavaScript 字串,在所有 HTML 加載完成但在 PDF 渲染之前執行。
  • JavascriptMessageListener 是一種方法回調,當瀏覽器的JavaScript控制台訊息可用時被調用。
  • FirstPageNumber HeaderFooter 的首頁頁碼。 預設值為1。
  • TableOfContents 在 HTML 文件中找到 id 為 "ironpdf-toc" 的元素的位置生成目錄。
  • TextHeader 為每個 PDF 頁面設置文字格式的頁腳內容。 支持「郵件合併」,並自動將URL轉換為超連結。
  • TextFooter 設置每個 PDF 頁面作為文字的頁腳內容。 支持「郵件合併」,並自動將URL轉換為超連結。
  • 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 設定 PDF 頁面的輸出紙張大小。
  • SetCustomPaperSizeinCentimeters 設定紙張尺寸為公分。
  • SetCustomPaperSizeInInches 設定紙張尺寸為英寸。
  • SetCustomPaperSizeinMilimeters 設定紙張大小為毫米。
  • SetCustomPaperSizeinPixelsOrPoints 設定紙張大小為螢幕像素或印表機點數。
  • ForcePaperSize 指定是否在從 HTML 生成 PDF 後,通過調整頁面大小來強制頁面大小與通過 PaperSize 指定的大小完全一致。
  • PrintHtmlBackgrounds 列印 HTML 圖片背景。
  • 灰階 輸出以灰色陰影顯示的灰階 PDF,而非全彩。
  • WaitFor 是一個持有等待機制配置的包裝物件。 在考慮渲染 JavaScript、Ajax 或動畫時,這可能會很有用。

    • PageLoad:默認渲染,無需等待。

    • RenderDelay:設定一個任意的等待時間。

    • 字體:等待所有字體載入完成。

    • JavaScript:使用JavaScript函數觸發渲染。

    • HTML 元素:等待特定的 HTML 元素,例如元素 ID、名稱、標籤名稱和查詢選擇器來定位元素。
  • NetworkIdle:等待網路閒置(0、2或自定義數量)。
  • 標題 PDF 文件的「標題」元數據。
  • InputEncoding 輸入字元編碼作為字串。 UTF-8 是 ASP.NET 的預設編碼
  • RequestContext 指定渲染的請求上下文。
  • 超時。 渲染超時(秒)。

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);
        }
    }
}

或者,我們可以使用 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);
        }
    }
}

如我們的範例所示,我們可以使用佔位符將動態文本或 HTML“合併”到頁眉/頁腳中:

  • {page}:表示 PDF 的當前頁碼。
  • {total-pages}: 作為 PDF 中的總頁數。
  • {url}:生成 PDF 文件的網頁 URL。
  • {date}:以適合伺服器系統環境的格式顯示今天的日期。
  • {time}: 以 24 小時制顯示小時:秒。
  • {html-title}:插入來自ASPX網頁表單head標籤中的title
  • {pdf-title}: 用於文件檔案名稱。

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 與多執行緒 CPU 和 Parallel.ForEach 指令結合使用,將顯著提高批量 PDF 格式處理的效率。

7. 下載為 ASP.NET 原始碼

本教程的完整ASPX 文件至 PDF 轉換器源碼可作為壓縮的 Visual Studio 網頁應用程式專案下載。

下載此教學作為 ASP.NET Visual Studio 專案

免費下載包含了一個 C# ASP.NET Web Forms 項目的工作代碼範例,展示了一個網頁如何被渲染成 PDF 並應用了設定。 我們希望這篇教程幫助您學會了如何將ASPX文件保存為PDF。

前進

通常,學習任何編程技術的最佳方法是在您自己的ASP.NET項目中進行實驗。 這包括嘗試使用IronPDF的ASPX到PDF轉換器。

開發人員可能也會對IronPdf.AspxToPdf 類別參考感興趣。

8. 觀看 ASPX 轉 PDF 教學影片


快速指南

Brand Visual Studio related to 快速指南

Download this Tutorial as Source Code

The full ASPX File to PDF Converter Source Code for this tutorial is available as a zipped Visual Studio Web Application project. 免下載包含適用於 C# ASP.NET Web Forms 專案的工作代碼範例,展示應用設定後作為 PDF 呈現的網頁。 下載

在 GitHub 上探索此教學

此 C# ASPX-To-PDF 專案的程式碼可在 GitHub 上以 C# 和 VB.NET 作為 ASP.NET 網站專案取得。請在 GitHub 上 fork 我們,以獲得更多使用 IronPDF 的協助。歡迎與任何可能會問「如何將 ASPX 轉換為 PDF?」的人分享此專案。

C# ASPX 到 PDF 網站專案 進階 ASP.NET 頁面到 PDF 的 C# 範例以建立 PDF 在 VB.NET 中用於建立 PDF 的 ASP.NET PDF 範例
Github Icon related to 快速指南
Html To Pdf Icon related to 快速指南

下載 C# PDF 快速入門指南

為了讓您在 .NET 應用程式中的 PDF 開發更輕鬆,我們已將快速入門指南匯編為 PDF 文件。這份「Cheat-Sheet」提供了生成和編輯 C# 和 VB.NET 中 PDF 的常用功能和範例的快速訪問,並有助於節省您在 .NET 專案中開始使用 IronPDF 的時間。

下載

查看 API 參考文件

探索 IronPDF 的 API 參考文檔,了解 IronPDF 所有功能、命名空間、類別、方法字段和枚舉的詳細信息。

查看 IronPDF API 參考資料
Documentation related to 快速指南
查克尼思·賓
軟體工程師
Chaknith 致力於 IronXL 和 IronBarcode。他在 C# 和 .NET 方面擁有豐富的專業知識,協助改進軟體並支持客戶。他從用戶互動中獲得的洞察力有助於提高產品、文檔和整體體驗。