跳過到頁腳內容
使用IRONPDF

如何使用 ASP 將 HTML 轉換為 PDF

開發者如何在 ASP.NET Core 中將 HTML 轉換為 PDF?

還在為如何從 ASP.NET Core 應用程式產生清晰、像素級完美的報表和發票而苦惱嗎?你並不孤單。

每個開發人員最終都需要將動態 Web 內容(如報告或確認函)轉換為可靠的、可下載的 PDF 版本。 這是產生從發票、詳細報告到安全文件格式等一切內容的基本要求。

挑戰是什麼? 讓包含所有 CSS 和 JavaScript 的複雜 HTML 程式碼完美地渲染成 PDF 檔案。 這就是 IronPdf 的用武之地。 我們擁有一個功能強大的 .NET PDF 庫,它使用 Chrome 的 HTML 內容渲染引擎來簡化 HTML 到 PDF 的轉換過程,確保您獲得與螢幕上所見完全一致的結果。 只需幾行程式碼,即可輕鬆將最複雜的 HTML 檔案轉換為 PDF 文件格式。

準備好要看看是怎麼做到的了嗎? 讓我們深入了解如何使用 IronPDF 處理 ASP 將 HTML 轉換為 PDF 的任務。

立即開始免費試用,開始將 HTML 文件轉換為 PDF 文件。

使用 IronPDF 的入門步驟是什麼?

在 ASP.NET Core 專案中安裝 IronPDF 只需要在 NuGet 套件管理器控制台中執行一個指令:

Install-Package IronPdf
Install-Package IronPdf
SHELL

這個 .NET Framework 程式庫提供了全面的 HTML 渲染功能,支援現代 HTML 元素、CSS 樣式和 JavaScript 執行。 PDF轉換器能夠無縫處理複雜的HTML結構和CSS屬性。 它對於管理各種文件格式至關重要。

如何將HTML字串轉換為PDF文件?

將 HTML 字串直接轉換為 PDF 檔案非常簡單。 以下程式碼片段建立了一個完整的 ASP.NET Core 控制器,用於將 HTML 內容轉換為 PDF 文件:

using Microsoft.AspNetCore.Mvc;
using IronPdf;

namespace HtmlToPdf.Controllers
{
    public class PdfController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

        [HttpGet]
        public IActionResult ConvertHtmlStringToPdf()
        {
            string htmlContent = @"
<html>
  <head>
    <title>IronPDF Test</title>
    <style>
      body { font-family: Arial; margin: 40px; }
      h1 { color: #2b5797; }
      table { border-collapse: collapse; width: 100%; margin-top: 20px; }
      th, td { border: 1px solid #ccc; padding: 8px; }
      th { background: #f0f0f0; }
    </style>
  </head>
  <body>
    <h1>IronPDF HTML to PDF Test</h1>
    <p>This is a simple test of converting an HTML string to PDF using IronPDF.</p>
    <table>
      <tr><th>Item</th><th>Price</th></tr>
      <tr><td>Apples</td><td>$1.50</td></tr>
      <tr><td>Bananas</td><td>$0.90</td></tr>
    </table>
    <p><em>End of test document.</em></p>
  </body>
</html>";
            // Initialize the PDF converter
            var renderer = new ChromePdfRenderer();
            // Configure default page size and other settings
            renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
            renderer.RenderingOptions.MarginTop = 20;
            renderer.RenderingOptions.MarginBottom = 20;
            // Convert HTML string to PDF document
            var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
            // Return PDF file to user, allowing them to download PDF version
            return File(pdfDocument.BinaryData, "application/pdf", "output.pdf");
        }
    }
}
using Microsoft.AspNetCore.Mvc;
using IronPdf;

namespace HtmlToPdf.Controllers
{
    public class PdfController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

        [HttpGet]
        public IActionResult ConvertHtmlStringToPdf()
        {
            string htmlContent = @"
<html>
  <head>
    <title>IronPDF Test</title>
    <style>
      body { font-family: Arial; margin: 40px; }
      h1 { color: #2b5797; }
      table { border-collapse: collapse; width: 100%; margin-top: 20px; }
      th, td { border: 1px solid #ccc; padding: 8px; }
      th { background: #f0f0f0; }
    </style>
  </head>
  <body>
    <h1>IronPDF HTML to PDF Test</h1>
    <p>This is a simple test of converting an HTML string to PDF using IronPDF.</p>
    <table>
      <tr><th>Item</th><th>Price</th></tr>
      <tr><td>Apples</td><td>$1.50</td></tr>
      <tr><td>Bananas</td><td>$0.90</td></tr>
    </table>
    <p><em>End of test document.</em></p>
  </body>
</html>";
            // Initialize the PDF converter
            var renderer = new ChromePdfRenderer();
            // Configure default page size and other settings
            renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
            renderer.RenderingOptions.MarginTop = 20;
            renderer.RenderingOptions.MarginBottom = 20;
            // Convert HTML string to PDF document
            var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
            // Return PDF file to user, allowing them to download PDF version
            return File(pdfDocument.BinaryData, "application/pdf", "output.pdf");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

輸出 PDF 檔案

ASP.NET HTML 轉 PDF:完整指南(使用 IronPDF):圖 1 - ASP.NET 中的簡單 HTML 轉 PDF 輸出

此程式碼片段在處理網頁時會在內部呼叫ImportFromUrl函數。 ChromePdfRenderer類別負責處理轉換過程,將 HTML 程式碼轉換為格式正確的 PDF 檔案。產生的 PDF 文件會保留所有 HTML 標籤、CSS 文件,甚至包括 HTML 字串中的內聯樣式。 此過程對於準確轉換 PDF 頁面至關重要。

如何將HTML檔案轉換為PDF檔案?

在處理伺服器上現有的 HTML 檔案時,IronPDF 可以轉換 HTML 檔案內容,同時保留所有連結資源。 這種方法非常適合基於模板的文檔生成:

using IronPdf;
using Microsoft.AspNetCore.Mvc;
using System.IO;

namespace YourApp.Controllers
{
    public class DocumentController : Controller
    {
        private readonly IWebHostEnvironment _environment;

        public DocumentController(IWebHostEnvironment environment)
        {
            _environment = environment;
        }

        [HttpGet]
        public IActionResult GeneratePdfFromTemplate(string templateName)
        {
            // Get path to HTML file
            string htmlFilePath = Path.Combine(_environment.WebRootPath, "templates", $"{templateName}.html");
            var renderer = new ChromePdfRenderer();
            // Configure rendering options
            renderer.RenderingOptions.EnableJavaScript = true;
            renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
            // Convert HTML file to PDF
            var pdf = renderer.RenderHtmlFileAsPdf(htmlFilePath);
            // Add headers and footers if needed
            renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
            {
                Height = 25,
                HtmlFragment = "<div style='text-align:center'>Company Report</div>"
            };
            return File(pdf.BinaryData, "application/pdf", $"{templateName}_generated.pdf");
        }
    }
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using System.IO;

namespace YourApp.Controllers
{
    public class DocumentController : Controller
    {
        private readonly IWebHostEnvironment _environment;

        public DocumentController(IWebHostEnvironment environment)
        {
            _environment = environment;
        }

        [HttpGet]
        public IActionResult GeneratePdfFromTemplate(string templateName)
        {
            // Get path to HTML file
            string htmlFilePath = Path.Combine(_environment.WebRootPath, "templates", $"{templateName}.html");
            var renderer = new ChromePdfRenderer();
            // Configure rendering options
            renderer.RenderingOptions.EnableJavaScript = true;
            renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
            // Convert HTML file to PDF
            var pdf = renderer.RenderHtmlFileAsPdf(htmlFilePath);
            // Add headers and footers if needed
            renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
            {
                Height = 25,
                HtmlFragment = "<div style='text-align:center'>Company Report</div>"
            };
            return File(pdf.BinaryData, "application/pdf", $"{templateName}_generated.pdf");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

輸出 PDF

! ASP 將 HTML 轉換為 PDF:IronPDF 完整指南:圖 2 - HTML 範本檔案到 PDF

此方法從磁碟讀取 HTML 文檔,並將其轉換為 PDF 文件,同時保持 HTML 結構不變。 PDF轉換過程會保留所有CSS屬性、影像URL,甚至複雜的HTML元素。 您可能還會遇到一些進階場景,例如設定特定的頁面寬度。

IronPDF 如何處理有表單驗證的網頁?

ASP.NET Core 應用程式通常使用表單驗證來保護內容。 在轉換需要身份驗證的 HTML 文件時,IronPDF 可以傳遞身份驗證 cookie:

[Authorize]
public IActionResult ConvertAuthenticatedPage()
{
    var renderer = new ChromePdfRenderer();
    // Get current URL with authentication
    string currentUrl = $"{Request.Scheme}://{Request.Host}/SecureContent";
    // Pass authentication cookie
    var authCookie = Request.Cookies[".AspNetCore.Cookies"];
    if (!string.IsNullOrEmpty(authCookie))
    {
        renderer.RenderingOptions.CustomCssUrl = currentUrl;
    }
    // Convert authenticated page
    var pdf = renderer.RenderUrlAsPdf(currentUrl);
    return File(pdf.BinaryData, "application/pdf", "secure_document.pdf");
}
[Authorize]
public IActionResult ConvertAuthenticatedPage()
{
    var renderer = new ChromePdfRenderer();
    // Get current URL with authentication
    string currentUrl = $"{Request.Scheme}://{Request.Host}/SecureContent";
    // Pass authentication cookie
    var authCookie = Request.Cookies[".AspNetCore.Cookies"];
    if (!string.IsNullOrEmpty(authCookie))
    {
        renderer.RenderingOptions.CustomCssUrl = currentUrl;
    }
    // Convert authenticated page
    var pdf = renderer.RenderUrlAsPdf(currentUrl);
    return File(pdf.BinaryData, "application/pdf", "secure_document.pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

此腳本呼叫ImportFromUrl來識別經過驗證後呈現的表格、表單和其他 HTML 內容。 HTTP 狀態碼驗證可確保在 PDF 轉換之前成功檢索頁面。 如果 URL 無效或不是 URL,則開啟 URL 時出錯,導致處理失敗。 如果 URL 指向同一個虛擬目錄,則可以從指定的 URL 正確解析資源。

如何轉換 ASPX 檔案和動態內容?

對於舊版 ASPX 文件轉換或動態產生的文檔,IronPDF 可以無縫處理渲染過程。 這段簡單的程式碼片段可以從任何 HTTP 或 HTTPS 位址建立 PDF 頁面:

public IActionResult ConvertDynamicContent()
{
    var renderer = new ChromePdfRenderer();
    // Enable JavaScript for dynamic content
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.WaitFor.RenderDelay(1000); // Wait for content to load
    // Handle various HTML tags and dynamic elements
    string dynamicHtml = GenerateDynamicHtml(); // Your method
    var pdf = renderer.RenderHtmlAsPdf(dynamicHtml);
    return File(pdf.BinaryData, "application/pdf", "dynamic.pdf");
}
public IActionResult ConvertDynamicContent()
{
    var renderer = new ChromePdfRenderer();
    // Enable JavaScript for dynamic content
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.WaitFor.RenderDelay(1000); // Wait for content to load
    // Handle various HTML tags and dynamic elements
    string dynamicHtml = GenerateDynamicHtml(); // Your method
    var pdf = renderer.RenderHtmlAsPdf(dynamicHtml);
    return File(pdf.BinaryData, "application/pdf", "dynamic.pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

輸出

! ASP 將 HTML 轉換為 PDF:IronPDF 完整指南:圖 3 - 輸出 PDF 文件

HTML 轉換 PDF 時常見的問題是確保內容不會在 HTML 中造成不必要的斷行。 IronPDF 最大程度地減少了這種情況。

如何處理 CSS 樣式和進階 HTML 渲染?

IronPDF 的 HTML 渲染引擎支援進階 CSS 樣式和 HTML5 功能。 將 HTML 轉換為 PDF 時,該程式庫會處理 CSS 屬性解析,包括複雜的佈局和響應式設計。 PDF 程式能夠以程式設計方式保持網頁的視覺保真度,包括 CSS 檔案、HTML 標籤和 JavaScript 渲染的內容。

轉換過程會自動處理空白頁、多頁以及頁面尺寸調整。 它還可以處理特殊場景,例如在奇數頁和偶數頁或僅在後續奇數頁上添加頁首/頁腳,或優雅地處理不存在的頁面。 它旨在輕鬆轉換複雜的網頁內容。

為什麼選擇 IronPDF 來開發您的 .NET 專案?

IronPDF 是一款功能全面的 .NET HTML 轉 PDF 庫,表現出色。 與基本的 PDF 轉換器不同,它完全支援現代 Web 標準,可以處理從簡單的 HTML 字串到具有表單驗證的複雜 Web 應用程式的一切。

該庫擅長轉換 HTML 文件並保留所有格式,因此非常適合在 .NET Core 應用程式中產生專業的 PDF 文件。 無論您需要轉換 HTML 檔案、處理 HTML 內容,或是從現有的 PDF 文件範本產生 PDF,IronPDF 都能提供無縫 PDF 轉換所需的工具。

立即下載 IronPDF ,只需幾行程式碼即可將您的 HTML 內容轉換為專業的 PDF 文件。 如需更多支持,請查閱全面的文件API 參考,以充分發揮ASP.NET Core 應用程式中 HTML 到 PDF 轉換的潛力。

常見問題解答

開發人員如何在 ASP.NET Core 中將 HTML 轉換為 PDF?

開發人員可使用 IronPDF 在 ASP.NET Core 中將 HTML 轉換為 PDF,IronPDF 提供了直接的 API,可將 HTML 內容渲染為 PDF 文件。這包括將 HTML 字串、檔案、甚至驗證過的網頁轉換成 PDF。

IronPDF 用於 HTML 至 PDF 轉換的主要功能有哪些?

IronPDF 提供的主要功能包括支援 HTML5、CSS、JavaScript 以及複雜的頁面佈局。它還可以讓開發人員輕鬆地將 HTML 字串、URL 和本機 HTML 檔案轉換為 PDF 文件。

IronPDF 能否在轉換過程中處理已驗證的網頁?

是的,IronPDF 可以處理經過認證的網頁。它支援轉換需要驗證的網頁,確保從受保護的網頁內容安全、準確地生成 PDF。

IronPDF 如何確保轉換後 PDF 的品質?

IronPdf 透過使用先進的渲染引擎準確地渲染 HTML 內容,包括樣式、字體和圖片,以確保高品質的 PDF 輸出。這可確保最終的 PDF 與原始 HTML 排版緊密吻合。

是否可以使用 IronPDF 將 HTML 字串轉換為 PDF?

是的,IronPDF 可以將 HTML 字串直接轉換成 PDF 文件。此功能對於從 Web 應用程式中的 HTML 內容動態產生 PDF 非常有用。

IronPDF 是否支持将本地 HTML 文件转换为 PDF?

IronPDF 透過允許開發人員指定檔案路徑,支援將本機 HTML 檔案轉換為 PDF。此功能可讓您輕鬆地從儲存在伺服器上的靜態 HTML 檔案產生 PDF。

IronPdf 支援哪些程式語言?

IronPDF 專為搭配 C# 和 VB.NET 使用而設計,因此非常適合在 .NET 生態系統中工作的開發人員,將 PDF 生成功能加入其應用程式中。

IronPDF 可以處理複雜的 HTML 佈局和樣式嗎?

是的,IronPdf 具備處理複雜 HTML 佈局和樣式(包括 CSS 和 JavaScript)的能力,可確保所產生的 PDF 維持原始網頁的設計和功能。

在 ASP.NET 應用程式中將 HTML 轉換為 PDF 有哪些用例?

一些使用案例包括從網頁產生發票、報告和文件,歸檔網頁內容,以及建立網頁的可下載 PDF 版本以供離線使用。

IronPDF 與其他 HTML 至 PDF 的轉換工具比較如何?

IronPDF 以其易用性、強大的功能集以及對各種 HTML 元素和認證的出色支援脫穎而出,為尋求高品質 PDF 生成的開發人員提供了可靠的解決方案。

Curtis Chau
技術作家

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

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