跳過到頁腳內容
使用IRONPDF

如何在 .NET Core 中將 ASP HTML 轉換為 PDF

將動態 ASP.NET HTML 轉換為 PDF 文件是現代 ASP.NET 應用程式的基本要求。 無論您是產生發票、建立報告還是產生可下載的 PDF 文件,將 HTML 內容轉換為專業的 PDF 文件的能力對於提供完善的使用者體驗至關重要。

IronPDF 透過提供強大的基於 Chrome 的渲染引擎,簡化了 ASP HTML 到 PDF 的轉換過程,該引擎可在生成的 PDF 文件中完美地保留 HTML 格式、CSS 樣式和 JavaScript 功能。 本教學將引導您了解使用 IronPDF 庫在 ASP.NET Core 應用程式中將 HTML 轉換為 PDF 的有效方法。

為什麼開發人員需要將 HTML 轉換為 PDF?

ASP.NET Core 應用程式經常產生動態 HTML 內容,使用者需要下載、分享或將其存檔為 PDF 檔案。 將 HTML 轉換為 PDF 相比簡單地保存網頁或截圖具有幾個關鍵優勢。

PDF 文件在所有裝置和平台上保持一致的格式,確保您的發票無論是在 Windows、Mac 還是行動裝置上查看,看起來都完全一樣。 它們也非常適合需要數位簽名、安全設定或專業列印的現有文件。 伺服器端 PDF 轉換無需使用者安裝特定軟體,並能更好地控制最終的 PDF 檔案輸出。

常見用例包括從儀表板資料產生財務報告、從訂單資訊建立可下載的發票、產生帶有二維碼的門票和通行證,以及將表單提交內容轉換為永久記錄。 透過在伺服器端處理 ASP HTML 到 PDF 的轉換,您可以確保無論使用者的瀏覽器或裝置功能為何,都能獲得一致的結果。

IronPDF的安裝過程是怎麼樣的?

在 ASP.NET Core 專案中使用 IronPDF 非常簡單。 該程式庫支援 .NET Core 2.0 及更高版本,以及 .NET 5、6、7 和 8,使其與所有現代 ASP.NET Core 應用程式相容,可用於 HTML 到 PDF 的轉換任務。

透過 NuGet 套件管理器安裝

將 IronPDF 新增至 ASP.NET 專案中以將 HTML 轉換為 PDF 的最快方法是透過 Visual Studio 中的 NuGet 套件管理器。 在解決方案資源管理器中右鍵單擊您的項目,選擇"管理 NuGet 套件",然後搜尋 IronPDF。 點擊最新版本上的"安裝"按鈕,將其新增至您的專案。 有關詳細的安裝說明,請參閱 IronPDF 安裝指南。

Install-Package IronPdf

添加必需的命名空間

安裝完成後,將 IronPDF 命名空間新增至任何需要處理 PDF 產生的 C# 檔案:

using IronPdf;
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

這個簡單的導入語句讓您可以存取 IronPDF 的所有功能,包括用於 HTML 轉換的ChromePdfRenderer類別以及用於自訂 PDF 輸出的各種配置選項。

基本組態

對於大多數 ASP.NET Core 應用程序,IronPDF 安裝後無需額外配置即可立即使用。 不過,您可以在Program.csStartup.cs檔案中設定全域選項:

// Optional: Configure IronPDF settings
Installation.TempFolderPath = @"C:\Temp\IronPdf\";
Installation.LinuxAndDockerDependenciesAutoConfig = true;
// Optional: Configure IronPDF settings
Installation.TempFolderPath = @"C:\Temp\IronPdf\";
Installation.LinuxAndDockerDependenciesAutoConfig = true;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

這些配置選項有助於針對您的特定託管環境最佳化 IronPDF,無論您是在 Windows、Linux 還是在 Docker 容器中執行。 確保腳本檔案和應用程式檔案不位於同一目錄下,以防止衝突。

如何將HTML字串轉換為PDF?

IronPDF 最基本的操作是將 HTML 字串直接轉換為 PDF 文件。 當您在 ASP.NET 應用程式中動態建立 HTML 內容或使用 HTML 文件作為範本時,這種方法非常理想。

// Create a PDF converter instance
var renderer = new ChromePdfRenderer();
// Convert HTML string to PDF document
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Report</h1><p>Generated on: " + DateTime.Now + "</p>");
// Save the resultant PDF document to a file
pdf.SaveAs("report.pdf");
// Create a PDF converter instance
var renderer = new ChromePdfRenderer();
// Convert HTML string to PDF document
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Report</h1><p>Generated on: " + DateTime.Now + "</p>");
// Save the resultant PDF document to a file
pdf.SaveAs("report.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

這段程式碼片段創造了一個新的ChromePdfRenderer實例,它使用 Chromium 引擎來渲染你的 HTML 內容。 RenderHtmlAsPdf方法接受任何有效的 HTML 字串,並傳回一個PdfDocument物件。 然後,您可以將此 PDF 檔案儲存到磁碟,或將其作為位元組陣列直接串流傳輸給使用者。 了解更多關於ChromePdfRenderer類別及其功能的資訊。

使用 CSS 和圖片

IronPDF 完全支援 CSS 樣式,並且在將 HTML 轉換為 PDF 時可以嵌入來自各種來源的圖片。 PDF轉換器能夠完全忠實地處理HTML元素,包括各種HTML標籤和圖像URL:

var html = @"
    <style>
        body { font-family: Arial, sans-serif; margin: 40px; }
        h1 { color: #2c3e50; border-bottom: 2px solid #3498db; }
        .highlight { background-color: #f1c40f; padding: 5px; }
    </style>
    <h1>Monthly Report</h1>
    <p>This HTML document includes <span class='highlight'>highlighted text</span> and styling.</p>
    <img src='data:image/png;base64,iVBORw0KGgoAAAANS...' alt='Logo' />";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
var html = @"
    <style>
        body { font-family: Arial, sans-serif; margin: 40px; }
        h1 { color: #2c3e50; border-bottom: 2px solid #3498db; }
        .highlight { background-color: #f1c40f; padding: 5px; }
    </style>
    <h1>Monthly Report</h1>
    <p>This HTML document includes <span class='highlight'>highlighted text</span> and styling.</p>
    <img src='data:image/png;base64,iVBORw0KGgoAAAANS...' alt='Logo' />";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

渲染器可以處理內聯樣式、CSS 文件,甚至是 base64 編碼的圖像。 這樣可以確保您的 PDF 頁面保持 HTML 內容的精確外觀,包括現代 CSS3 功能,如 flexbox 和網格佈局。 HTML 轉 PDF 轉換會保留所有 HTML 標籤及其樣式,而不會產生空白頁。

如何將 ASP.NET Core 視圖轉換為 PDF?

將整個 ASP.NET Core 網頁或視圖轉換為 PDF 是一個常見的需求,尤其是根據現有 HTML 文件產生報表時。 IronPDF 為這種 ASP HTML 到 PDF 的轉換場景提供了多種方法,無論您處理的是單一頁面還是多個頁面。

轉換控制器視圖

在 ASP.NET Core 控制器中,您可以將視圖呈現為 HTML,然後使用 IronPDF 強大的 PDF 庫渲染功能將其轉換為 PDF 文件:

[HttpGet]
public async Task<IActionResult> DownloadPdf()
{
    var invoiceModel = new InvoiceModel
    {
        InvoiceNumber = 12345,
        Date = DateTime.Now,
        CustomerName = "Acme Corporation",
        Items = new List<InvoiceItem>
        {
            new InvoiceItem { Description = "Service", Quantity = 1, Price = 100.0 }
        },
        Total = 100.0
    };
    // Render the view to HTML string
    var htmlContent = await RenderViewToString("Invoice", invoiceModel);
    // Convert HTML to PDF
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(htmlContent);
    // Return PDF to browser
    var contentType = "application/pdf";
    var fileName = $"invoice_{DateTime.Now:yyyyMMdd}.pdf";
    return File(pdf.BinaryData, contentType, fileName);
}
private async Task<string> RenderViewToString(string viewName, object model)
{
    ViewData.Model = model;
    using (var writer = new StringWriter())
    {
        var viewResult = viewEngine.FindView(ControllerContext, viewName, false);
        var viewContext = new ViewContext(
            ControllerContext,
            viewResult.View,
            ViewData,
            TempData,
            writer,
            new HtmlHelperOptions()
        );
        await viewResult.View.RenderAsync(viewContext);
        return writer.GetStringBuilder().ToString();
    }
}
[HttpGet]
public async Task<IActionResult> DownloadPdf()
{
    var invoiceModel = new InvoiceModel
    {
        InvoiceNumber = 12345,
        Date = DateTime.Now,
        CustomerName = "Acme Corporation",
        Items = new List<InvoiceItem>
        {
            new InvoiceItem { Description = "Service", Quantity = 1, Price = 100.0 }
        },
        Total = 100.0
    };
    // Render the view to HTML string
    var htmlContent = await RenderViewToString("Invoice", invoiceModel);
    // Convert HTML to PDF
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(htmlContent);
    // Return PDF to browser
    var contentType = "application/pdf";
    var fileName = $"invoice_{DateTime.Now:yyyyMMdd}.pdf";
    return File(pdf.BinaryData, contentType, fileName);
}
private async Task<string> RenderViewToString(string viewName, object model)
{
    ViewData.Model = model;
    using (var writer = new StringWriter())
    {
        var viewResult = viewEngine.FindView(ControllerContext, viewName, false);
        var viewContext = new ViewContext(
            ControllerContext,
            viewResult.View,
            ViewData,
            TempData,
            writer,
            new HtmlHelperOptions()
        );
        await viewResult.View.RenderAsync(viewContext);
        return writer.GetStringBuilder().ToString();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

這種方法首先將 Razor 視圖渲染成 HTML 字串,然後再轉換為 PDF。 PDF 檔案將以文件下載的形式傳回使用者的瀏覽器,並附有對應的檔案名稱。 無論您是轉換 ASPX 檔案還是現代 Razor 視圖,此功能都能無縫運作。

將 URL 轉換為 PDF

對於現有的網頁,您可以使用 IronPDF 作為強大的 HTML 轉 PDF 轉換器,將任何指定的 URL 直接轉換為 PDF 檔案。 只需提供 HTTP 或 HTTPS 位址作為 URL 參數即可:

[HttpGet]
public IActionResult GeneratePdfFromUrl()
{
    var renderer = new ChromePdfRenderer();
    // Convert a specified URL to PDF document
    var pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/");
    // Stream the PDF file to the browser
    return File(pdf.BinaryData, "application/pdf", "invoice.pdf");
}
[HttpGet]
public IActionResult GeneratePdfFromUrl()
{
    var renderer = new ChromePdfRenderer();
    // Convert a specified URL to PDF document
    var pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/");
    // Stream the PDF file to the browser
    return File(pdf.BinaryData, "application/pdf", "invoice.pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

當您已經擁有格式良好的網頁並希望將其作為可下載的 PDF 版本提供時,此方法尤其有用。 .NET 庫處理所有外部資源,包括樣式表、腳本和圖像,確保完整的 HTML 渲染。 如果轉換器遇到無效的 URL,它將傳回對應的 HTTP 狀態碼。

處理身份驗證

使用 .NET 表單驗證或其他安全機制轉換已驗證頁面時,您可以傳遞 cookie 或標頭來維護相同的使用者帳戶會話。 這樣可以防止在 PDF 轉換過程中重定向到登入畫面:

var renderer = new ChromePdfRenderer();
// Set cookies for authenticated requests with user database credentials
renderer.RenderingOptions.CustomCookies.Add("auth_token", Request.Cookies["auth_token"]);
// Convert protected web pages to PDF
var pdf = renderer.RenderUrlAsPdf("https://localhost:5001/secure/report");
var renderer = new ChromePdfRenderer();
// Set cookies for authenticated requests with user database credentials
renderer.RenderingOptions.CustomCookies.Add("auth_token", Request.Cookies["auth_token"]);
// Convert protected web pages to PDF
var pdf = renderer.RenderUrlAsPdf("https://localhost:5001/secure/report");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

這樣可以確保受保護的 HTML 內容在轉換為 PDF 檔案時保持安全性。 PDF 轉換過程遵循您應用程式的基本驗證和表單驗證,防止未經授權的使用者帳戶存取敏感的現有文件。 在需要進行基本身份驗證時,您還可以傳遞使用者名稱和密碼參數。

如何自訂PDF輸出?

IronPDF 作為一款功能全面的 PDF 轉換器,提供豐富的自訂選項,讓您可以控制如何從 HTML 文件產生 PDF 文件。 這些設定可協助您建立符合特定頁面佈局和格式要求的專業 PDF 檔案。

頁面設定和邊距

var renderer = new ChromePdfRenderer();
// Set default page size for PDF pages
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
// Control page width and margins for the resultant PDF document
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
var renderer = new ChromePdfRenderer();
// Set default page size for PDF pages
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
// Control page width and margins for the resultant PDF document
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

這些設定控制 PDF 頁面的實體佈局,包括奇數頁和偶數頁。 您可以選擇標準紙張尺寸或自訂尺寸,設定縱向或橫向方向,並調整頁邊距以符合多頁設計要求。 圖形模板系統確保後續奇數頁和偶數頁的樣式一致。

頁首和頁尾

在將 HTML 文件轉換為 PDF 文件時,新增統一的頁首和頁尾可以提昇文件的專業外觀:

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align: center'>Company Report</div>",
    MaxHeight = 20
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align: center'>Page {page} of {total-pages}</div>",
    MaxHeight = 20
};
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align: center'>Company Report</div>",
    MaxHeight = 20
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align: center'>Page {page} of {total-pages}</div>",
    MaxHeight = 20
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

頁首和頁尾支援 HTML 元素和格式,並為所有 PDF 頁面上的頁碼、日期和其他動態內容提供特殊佔位符。 以下程式碼示範如何為動態產生的文件或現有 PDF 文件新增專業頁首。

最佳實踐是什麼?

為確保將 HTML 轉換為 PDF 時達到最佳效能和質量,請遵循以下經過驗證的 PDF 轉換成功實務。

在產生 PDF 檔案之前,請務必先在瀏覽器中測試 HTML 渲染效果,以驗證樣式和佈局。 盡可能使用外部資源的絕對 URL,因為相對路徑在 HTML 轉 PDF 過程中可能會導致問題。 對於包含多個 HTML 元素且 JavaScript 密集的複雜網頁,請新增渲染延遲以確保完全載入。 考慮對頻繁產生的 PDF 文件實施緩存,以降低伺服器負載。 有關使用此 .NET 程式庫的更多 ASP.NET Core 最佳實踐,請參閱 Microsoft 的官方文件。

部署到生產環境時,請設定適當的臨時資料夾路徑,並確保您的託管環境已安裝 PDF 庫所需的必要依賴項,尤其是在 Linux 部署中。 為避免衝突,請避免將腳本和轉換邏輯放在同一目錄下。 請查看我們的故障排除指南,以了解現有 PDF 文件的常見部署場景。 當您打算處理直接 HTML 內容時,請務必驗證輸入是否為 URL,以避免意外行為。

結論

使用 IronPDF,在 ASP.NET Core 應用程式中將 ASP HTML 轉換為 PDF 變得非常簡單。 此函式庫基於 Chrome 的渲染技術可確保準確轉換,同時提供豐富的自訂選項,用於產生專業文件。

無論是處理 HTML 字串、URL 或完整的網頁,IronPDF 都能保留精確的格式、CSS 樣式和 JavaScript 行為。 這款基於 .NET 的 Web 應用程式工具能夠有效率地處理整個 PDF 轉換過程。

立即開始您的 30 天免費試用,或與我們的團隊預約演示

常見問題解答

IronPDF 在 ASP.NET 應用程式中的主要功能是什麼?

IronPDF 用於在 ASP.NET 應用程式中將 HTML 內容轉換成專業的 PDF 文件。它能讓開發人員有效率地產生發票、建立報表,以及製作可下載的 PDF 檔案。

為什麼在 ASP.NET 專案中將 HTML 轉換為 PDF 很重要?

將 HTML 轉換為 PDF 在 ASP.NET 專案中至關重要,因為它可以將動態內容轉換為專業、可分享的 PDF 文件(例如發票和報告),有助於提供精緻的使用者體驗。

IronPDF 可以處理 ASP.NET 中的動態 HTML 內容嗎?

是的,IronPDF 旨在處理動態 HTML 內容,因此非常適合從動態 ASP.NET 網頁和應用程式生成 PDF。

在 ASP.NET 中將 HTML 轉換為 PDF 的常見用例有哪些?

常見的使用案例包括產生發票、建立報告,以及從網路應用程式提供可下載的 PDF 檔案。

IronPDF 是否支援在轉換後的 PDF 文件中加入樣式?

是的,IronPDF 支援 CSS 造型,讓開發人員可以在轉換後的 PDF 文件中維持原始 HTML 內容的外觀和感覺。

IronPDF 如何改善 ASP.NET 應用程式的使用者經驗?

IronPDF 可讓開發人員直接從他們的 ASP.NET 應用程式提供高品質的 PDF 文件,例如報告和發票,確保一致性和專業性,進而改善使用者經驗。

是否可以使用 IronPDF 自動生成 PDF?

是的,IronPDF for .NET 允許 PDF 自動生成,使開發人員能夠在他們的 ASP.NET 應用程式中以程式化的方式建立和管理 PDF 文件。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。