跳過到頁腳內容
USING IRONPDF

How to Convert ASP HTML to PDF in .NET Core Using IronPDF

IronPDF 使用基於 Chrome 的渲染引擎將 ASP.NET HTML 轉換為 PDF,同時保留 CSS 樣式和 JavaScript 功能。 本教學課程示範了在 ASP.NET Core 應用程式中將 HTML 字串、視圖和 URL 轉換為專業 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,並使用其Chrome 渲染引擎獲得像素級完美的效果

IronPDF C# PDF 庫主頁橫幅展示了主要功能,包括 HTML 轉 PDF、PDF 編輯功能以及帶有下載和許可按鈕的部署選項。

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

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

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

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

IronPDF 功能概述,包含四個主要類別:建立 PDF、轉換 PDF、編輯 PDF 以及簽名和保護 PDF,每個部分下方都有詳細的功能清單。

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

在 ASP.NET Core 專案中使用 IronPDF 非常簡單。 該程式庫支援 .NET Core 2.0 及更高版本,以及 .NET 5、6、7 和 8,使其與所有現代 ASP.NET Core 應用程式相容,可用於 HTML 到 PDF 的轉換任務。 有關特定平台需求,請查看Windows 相容性指南Linux 安裝說明

我應該使用哪種安裝方法?

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

Install-Package IronPdf

套件管理器控制台顯示 IronPDF NuGet 套件的安裝過程,其中包含多個相依性的下載

需要哪些命名空間?

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

using IronPdf;
using IronPdf;
$vbLabelText   $csharpLabel

這個簡單的導入語句讓您可以存取 IronPDF 的所有功能,包括用於 HTML 轉換的ChromePdfRenderer類別以及用於自訂 PDF 輸出的各種配置選項。 如果您使用其他 .NET 語言,也可以探索F# 整合VB.NET 的使用

IronPDF 功能概述展示了像素級完美渲染、5 分鐘設定以及在 .NET 應用程式中產生 PDF 的跨平台相容性。

如何為我的環境配置 IronPDF?

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

// Optional: Configure IronPDF settings
Installation.TempFolderPath = @"C:\Temp\IronPdf\";
Installation.LinuxAndDockerDependenciesAutoConfig = true;

// Configure logging for debugging
Installation.LoggingMode = IronPdf.Logging.LoggingMode.All;
Installation.LogFilePath = "IronPdfLog.log";

// For Azure deployments
Installation.AzureQuickDeployment = true;
// Optional: Configure IronPDF settings
Installation.TempFolderPath = @"C:\Temp\IronPdf\";
Installation.LinuxAndDockerDependenciesAutoConfig = true;

// Configure logging for debugging
Installation.LoggingMode = IronPdf.Logging.LoggingMode.All;
Installation.LogFilePath = "IronPdfLog.log";

// For Azure deployments
Installation.AzureQuickDeployment = true;
$vbLabelText   $csharpLabel

這些配置選項有助於針對您的特定託管環境改進 IronPDF,無論您是在 Windows、Linux 還是在 Docker 容器中運行。 對於Azure 部署,啟用AzureQuickDeployment可獲得最佳效能。 部署到AWS Lambda時,請考慮使用容器化部署。 確保腳本檔案和應用程式檔案不位於同一目錄下,以防止衝突。 對於生產環境,應實施自訂日誌記錄來監控 PDF 產生操作。

IronPDF 跨平台支援圖,展示了其與 .NET 版本、作業系統、雲端平台和開發環境的兼容性

如何將HTML字串轉換為PDF?

IronPDF 最基本的操作是將 HTML 字串直接轉換為 PDF 文件。 當您在 ASP.NET 應用程式中動態建立 HTML 內容或使用 HTML 文件作為範本時,這種方法非常理想。 RenderHtmlAsPdf 方法為轉換來自各種來源的 HTML提供了極大的靈活性。

// Create a PDF converter instance
var renderer = new ChromePdfRenderer();

// Configure rendering options for better quality
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.RenderDelay = 500; // Wait for content to load

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

// Or stream directly to browser
var pdfBytes = pdf.BinaryData;
// Create a PDF converter instance
var renderer = new ChromePdfRenderer();

// Configure rendering options for better quality
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.RenderDelay = 500; // Wait for content to load

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

// Or stream directly to browser
var pdfBytes = pdf.BinaryData;
$vbLabelText   $csharpLabel

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

PDF輸出檔是什麼樣的?

一張PDF檢視器截圖,顯示了一份基本的銷售報告,標題和時間戳生成於2025年1月11日晚上11:51:30

如何新增 CSS 樣式和圖片?

IronPDF 完全支援CSS 樣式,並且在將 HTML 轉換為 PDF 時可以嵌入來自各種來源的圖像。 PDF轉換器能夠完全忠實地處理HTML元素,包括各種HTML標籤和圖像URL。 它支援網頁字體SVG 圖形,甚至支援base64 編碼的圖像

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; }
        .table { width: 100%; border-collapse: collapse; }
        .table td { border: 1px solid #ddd; padding: 8px; }
    </style>
    <h1>Monthly Report</h1>
    <p>This HTML document includes <span class='highlight'>highlighted text</span> and styling.</p>
    <table class='table'>
        <tr><td>Product</td><td>Sales</td></tr>
        <tr><td>Widget A</td><td>$1,234</td></tr>
    </table>
    <img src='data:image/png;base64,iVBORw0KGgoAAAANS...' alt='Logo' />";

var renderer = new ChromePdfRenderer();

// Set base URL for relative paths
renderer.RenderingOptions.BaseUrl = "___PROTECTED_URL_90___";

// Enable JavaScript execution
renderer.RenderingOptions.EnableJavaScript = true;

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("styled-report.pdf");
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; }
        .table { width: 100%; border-collapse: collapse; }
        .table td { border: 1px solid #ddd; padding: 8px; }
    </style>
    <h1>Monthly Report</h1>
    <p>This HTML document includes <span class='highlight'>highlighted text</span> and styling.</p>
    <table class='table'>
        <tr><td>Product</td><td>Sales</td></tr>
        <tr><td>Widget A</td><td>$1,234</td></tr>
    </table>
    <img src='data:image/png;base64,iVBORw0KGgoAAAANS...' alt='Logo' />";

var renderer = new ChromePdfRenderer();

// Set base URL for relative paths
renderer.RenderingOptions.BaseUrl = "___PROTECTED_URL_90___";

// Enable JavaScript execution
renderer.RenderingOptions.EnableJavaScript = true;

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("styled-report.pdf");
$vbLabelText   $csharpLabel

渲染器可以處理內聯樣式、CSS 文件,甚至是 base64 編碼的圖像。 這樣可以確保您的 PDF 頁面保持 HTML 內容的精確外觀,包括現代 CSS3 功能,如 flexbox 和網格佈局。 HTML 轉 PDF 轉換會保留所有 HTML 標籤及其樣式,而不會產生空白頁。 對於複雜的佈局,可以考慮使用Bootstrap 相容性或實作自訂分頁符號

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

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

如何轉換控制器視圖?

在 ASP.NET Core 控制器中,您可以將視圖呈現為 HTML,然後使用 IronPDF 高效的 PDF 庫渲染功能將其轉換為 PDF 文件。 這種方法適用於MVC CoreMVC Framework應用程式:

[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 },
            new InvoiceItem { Description = "Support", Quantity = 2, Price = 50.0 }
        },
        Total = 200.0
    };

    // Render the view to HTML string
    var htmlContent = await RenderViewToString("Invoice", invoiceModel);

    // Convert HTML to PDF with custom settings
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
    renderer.RenderingOptions.PrintHtmlBackgrounds = true;

    // Add header with invoice number
    renderer.RenderingOptions.TextHeader.CenterText = "Invoice #" + invoiceModel.InvoiceNumber;
    renderer.RenderingOptions.TextHeader.DrawDividerLine = true;

    var pdf = renderer.RenderHtmlAsPdf(htmlContent);

    // Apply security settings if needed
    pdf.SecuritySettings.AllowUserPrinting = true;
    pdf.SecuritySettings.AllowUserCopyPasteContent = false;

    // Return PDF to browser
    var contentType = "application/pdf";
    var fileName = $"invoice_{invoiceModel.InvoiceNumber}_{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);

        if (!viewResult.Success)
        {
            throw new ArgumentException($"View '{viewName}' not found");
        }

        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 },
            new InvoiceItem { Description = "Support", Quantity = 2, Price = 50.0 }
        },
        Total = 200.0
    };

    // Render the view to HTML string
    var htmlContent = await RenderViewToString("Invoice", invoiceModel);

    // Convert HTML to PDF with custom settings
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
    renderer.RenderingOptions.PrintHtmlBackgrounds = true;

    // Add header with invoice number
    renderer.RenderingOptions.TextHeader.CenterText = "Invoice #" + invoiceModel.InvoiceNumber;
    renderer.RenderingOptions.TextHeader.DrawDividerLine = true;

    var pdf = renderer.RenderHtmlAsPdf(htmlContent);

    // Apply security settings if needed
    pdf.SecuritySettings.AllowUserPrinting = true;
    pdf.SecuritySettings.AllowUserCopyPasteContent = false;

    // Return PDF to browser
    var contentType = "application/pdf";
    var fileName = $"invoice_{invoiceModel.InvoiceNumber}_{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);

        if (!viewResult.Success)
        {
            throw new ArgumentException($"View '{viewName}' not found");
        }

        var viewContext = new ViewContext(
            ControllerContext,
            viewResult.View,
            ViewData,
            TempData,
            writer,
            new HtmlHelperOptions()
        );

        await viewResult.View.RenderAsync(viewContext);
        return writer.GetStringBuilder().ToString();
    }
}
$vbLabelText   $csharpLabel

這種方法首先將 Razor 視圖渲染成 HTML 字串,然後將其轉換為 PDF。 PDF 檔案將以文件下載的形式傳回使用者的瀏覽器,並附有對應的檔案名稱。 無論轉換 ASPX 檔案或現代 Razor 視圖,此功能都能流暢運作。 對於無頭轉換場景,請考慮使用 Razor.Templating.Core。

產生的PDF檔案是什麼樣子的?

! PDF 檢視器顯示了 Acme 公司 2025 年 2 月 11 日開立的編號為 12345 的已渲染發票,其中包含一項服務項目,總額為 100.00 美元。

如何將網址轉換為PDF?

對於現有的網頁,您可以使用 IronPDF 作為有效的 HTML 轉 PDF 轉換器,將任何指定的 URL 直接轉換為 PDF 檔案。 只需提供HTTP或HTTPS位址作為URL參數即可。 此方法支援對已認證請求使用cookie自訂 HTTP 標頭

[HttpGet]
public IActionResult GeneratePdfFromUrl()
{
    var renderer = new ChromePdfRenderer();

    // Configure for web page rendering
    renderer.RenderingOptions.WaitFor.RenderDelay = 2000; // Wait for dynamic content
    renderer.RenderingOptions.ViewportWidth = 1920; // Desktop viewport

    // Add custom headers if needed
    renderer.RenderingOptions.HttpHeaders.Add("Authorization", "Bearer your-token");

    // Handle cookies for authentication
    renderer.RenderingOptions.Cookies.Add(new Cookie
    {
        Name = "session_id",
        Value = Request.Cookies["session_id"],
        Domain = "yourdomain.com"
    });

    // Convert a specified URL to PDF document
    var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_91___");

    // Improve file size
    pdf.CompressImages(90);

    // Stream the PDF file to the browser
    return File(pdf.BinaryData, "application/pdf", "webpage.pdf");
}
[HttpGet]
public IActionResult GeneratePdfFromUrl()
{
    var renderer = new ChromePdfRenderer();

    // Configure for web page rendering
    renderer.RenderingOptions.WaitFor.RenderDelay = 2000; // Wait for dynamic content
    renderer.RenderingOptions.ViewportWidth = 1920; // Desktop viewport

    // Add custom headers if needed
    renderer.RenderingOptions.HttpHeaders.Add("Authorization", "Bearer your-token");

    // Handle cookies for authentication
    renderer.RenderingOptions.Cookies.Add(new Cookie
    {
        Name = "session_id",
        Value = Request.Cookies["session_id"],
        Domain = "yourdomain.com"
    });

    // Convert a specified URL to PDF document
    var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_91___");

    // Improve file size
    pdf.CompressImages(90);

    // Stream the PDF file to the browser
    return File(pdf.BinaryData, "application/pdf", "webpage.pdf");
}
$vbLabelText   $csharpLabel

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

URL轉換結果是什麼?

IronPDF 庫主頁展示了 C# PDF 轉換的功能,包括 HTML 轉 PDF 功能、定價選項以及 .NET 開發人員的程式碼範例。

如何處理已認證頁面?

使用 .NET 表單驗證或其他安全機制轉換已驗證頁面時,您可以傳遞 cookie 或標頭來維護使用者會話。 這樣可以防止在 PDF 轉換過程中重定向到登入畫面。 IronPDF 支援多種驗證方法,包括TLS 驗證Kerberos驗證:

var renderer = new ChromePdfRenderer();

// Set cookies for authenticated requests with user credentials
renderer.RenderingOptions.CustomCookies.Add("auth_token", Request.Cookies["auth_token"]);
renderer.RenderingOptions.CustomCookies.Add("session_id", Request.Cookies["session_id"]);

// Add authentication headers
renderer.RenderingOptions.HttpHeaders.Add("X-CSRF-Token", Request.Headers["X-CSRF-Token"]);

// For basic authentication
renderer.RenderingOptions.HttpLoginCredentials = new HttpLoginCredentials
{
    Username = "apiuser",
    Password = "securepassword"
};

// Configure timeout for slow-loading authenticated pages
renderer.RenderingOptions.RequestTimeout = 60000; // 60 seconds

// Convert protected web pages to PDF
var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_92___");

// Add metadata for tracking
pdf.MetaData.Author = User.Identity.Name;
pdf.MetaData.CreationDate = DateTime.Now;

pdf.SaveAs("secure-report.pdf");
var renderer = new ChromePdfRenderer();

// Set cookies for authenticated requests with user credentials
renderer.RenderingOptions.CustomCookies.Add("auth_token", Request.Cookies["auth_token"]);
renderer.RenderingOptions.CustomCookies.Add("session_id", Request.Cookies["session_id"]);

// Add authentication headers
renderer.RenderingOptions.HttpHeaders.Add("X-CSRF-Token", Request.Headers["X-CSRF-Token"]);

// For basic authentication
renderer.RenderingOptions.HttpLoginCredentials = new HttpLoginCredentials
{
    Username = "apiuser",
    Password = "securepassword"
};

// Configure timeout for slow-loading authenticated pages
renderer.RenderingOptions.RequestTimeout = 60000; // 60 seconds

// Convert protected web pages to PDF
var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_92___");

// Add metadata for tracking
pdf.MetaData.Author = User.Identity.Name;
pdf.MetaData.CreationDate = DateTime.Now;

pdf.SaveAs("secure-report.pdf");
$vbLabelText   $csharpLabel

這樣可以確保受保護的 HTML 內容在轉換為 PDF 檔案時保持安全性。 PDF轉換過程會遵守您應用程式的身份驗證,防止未經授權存取敏感文件。 在需要進行基本身份驗證時,您可以傳遞使用者名稱和密碼參數。 對於 SSO 實現,請考慮使用請求上下文管理。 ## 如何自訂 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 PDF document
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;

// Or use custom paper size
renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);

// Control first page differently
renderer.RenderingOptions.FirstPageNumber = 1;

// Enable print-friendly CSS
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

// Enable background colors and images
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
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 PDF document
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;

// Or use custom paper size
renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);

// Control first page differently
renderer.RenderingOptions.FirstPageNumber = 1;

// Enable print-friendly CSS
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

// Enable background colors and images
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
$vbLabelText   $csharpLabel

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

自訂 PDF 文件是什麼樣的?

IronPDF 庫主頁展示了 C# PDF 轉換的功能,包括 HTML 轉 PDF 功能、定價選項以及 .NET 開發人員的程式碼範例。

如何新增頁首和頁尾?

在將 HTML 文件轉換為 PDF 文件時,新增統一的頁首和頁尾可以提高文件的專業外觀。 IronPDF 同時支援文字標題HTML 標題

// Add text-based header and footer
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    CenterText = "Company Report",
    LeftText = "{date}",
    RightText = "Confidential",
    FontSize = 12,
    FontFamily = "Arial",
    DrawDividerLine = true
};

renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
    CenterText = "Page {page} of {total-pages}",
    LeftText = "© 2024 Company Name",
    RightText = "{time}",
    FontSize = 10,
    DrawDividerLine = true
};

// Or use HTML headers for more complex layouts
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = @"
        <div style='display: flex; justify-content: space-between; align-items: center;'>
            <img src='logo.png' height='30' />
            <h2>Monthly Report</h2>
            <span>{date}</span>
        </div>",
    MaxHeight = 50,
    DrawDividerLine = true
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = @"
        <div style='text-align: center; font-size: 12px; color: #666;'>
            <p>Page {page} of {total-pages} | Document ID: {pdf-title}</p>
        </div>",
    MaxHeight = 30,
    LoadStylesAndCSSFromMainHtmlDocument = true
};
// Add text-based header and footer
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    CenterText = "Company Report",
    LeftText = "{date}",
    RightText = "Confidential",
    FontSize = 12,
    FontFamily = "Arial",
    DrawDividerLine = true
};

renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
    CenterText = "Page {page} of {total-pages}",
    LeftText = "© 2024 Company Name",
    RightText = "{time}",
    FontSize = 10,
    DrawDividerLine = true
};

// Or use HTML headers for more complex layouts
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = @"
        <div style='display: flex; justify-content: space-between; align-items: center;'>
            <img src='logo.png' height='30' />
            <h2>Monthly Report</h2>
            <span>{date}</span>
        </div>",
    MaxHeight = 50,
    DrawDividerLine = true
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = @"
        <div style='text-align: center; font-size: 12px; color: #666;'>
            <p>Page {page} of {total-pages} | Document ID: {pdf-title}</p>
        </div>",
    MaxHeight = 30,
    LoadStylesAndCSSFromMainHtmlDocument = true
};
$vbLabelText   $csharpLabel

頁首和頁尾支援 HTML 元素和格式,並為頁碼、日期和其他動態內容提供特殊的佔位符,這些內容將跨所有 PDF 頁面顯示。 以下程式碼示範如何為動態產生的文件或現有 PDF 文件新增專業頁首。 您也可以為特定頁面套用頁眉,以便進行更多控制。

HTML 轉換 PDF 的最佳實務是什麼?

為確保將 HTML 轉換為 PDF 時達到最佳效能和質量,請遵循以下經過驗證的 PDF 轉換成功實務。 針對大規模部署實施效能最佳化策略。

在產生 PDF 檔案之前,請務必先在瀏覽器中測試 HTML 渲染效果,以驗證樣式和佈局。 盡可能使用外部資源的基本 URL ,因為相對路徑在 HTML 轉 PDF 過程中可能會導致問題。 對於包含多個 HTML 元素且 JavaScript 程式碼繁多的複雜網頁,請新增渲染延遲以確保頁面完全載入:

// Performance optimization example
public class PdfService
{
    private readonly ChromePdfRenderer _renderer;

    public PdfService()
    {
        _renderer = new ChromePdfRenderer();

        // Configure for optimal performance
        _renderer.RenderingOptions.RenderDelay = 100;
        _renderer.RenderingOptions.Timeout = 60000;
        _renderer.RenderingOptions.UseMarginsOnHeaderAndFooter = UseMargins.All;

        // Enable caching for repeated conversions
        _renderer.RenderingOptions.EnableJavaScript = true;
        _renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
    }

    public async Task<byte[]> GeneratePdfAsync(string html, PdfOptions options = null)
    {
        if (options != null)
        {
            ApplyOptions(options);
        }

        // Use async for better performance
        var pdf = await Task.Run(() => _renderer.RenderHtmlAsPdf(html));

        // Improve file size
        if (options?.CompressImages ?? false)
        {
            pdf.CompressImages(90);
        }

        return pdf.BinaryData;
    }

    private void ApplyOptions(PdfOptions options)
    {
        if (options.PageSize.HasValue)
            _renderer.RenderingOptions.PaperSize = options.PageSize.Value;

        if (options.Environment)
            _renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Environment;
    }
}
// Performance optimization example
public class PdfService
{
    private readonly ChromePdfRenderer _renderer;

    public PdfService()
    {
        _renderer = new ChromePdfRenderer();

        // Configure for optimal performance
        _renderer.RenderingOptions.RenderDelay = 100;
        _renderer.RenderingOptions.Timeout = 60000;
        _renderer.RenderingOptions.UseMarginsOnHeaderAndFooter = UseMargins.All;

        // Enable caching for repeated conversions
        _renderer.RenderingOptions.EnableJavaScript = true;
        _renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
    }

    public async Task<byte[]> GeneratePdfAsync(string html, PdfOptions options = null)
    {
        if (options != null)
        {
            ApplyOptions(options);
        }

        // Use async for better performance
        var pdf = await Task.Run(() => _renderer.RenderHtmlAsPdf(html));

        // Improve file size
        if (options?.CompressImages ?? false)
        {
            pdf.CompressImages(90);
        }

        return pdf.BinaryData;
    }

    private void ApplyOptions(PdfOptions options)
    {
        if (options.PageSize.HasValue)
            _renderer.RenderingOptions.PaperSize = options.PageSize.Value;

        if (options.Environment)
            _renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Environment;
    }
}
$vbLabelText   $csharpLabel

考慮對頻繁產生的 PDF 文件實施緩存,以降低伺服器負載。 有關使用此 .NET 程式庫的更多ASP.NET Core 最佳實踐,請參閱Microsoft 的官方文件。 在Web應用程式中使用非同步方法可以提高可擴充性。

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

對於高容量場景,可以考慮實作並行處理或將IronPDF 用作微服務。 監控記憶體使用情況並實施適當的記憶體釋放機制。 處理大型 HTML 文件時,使用串流處理方法來最大限度地減少記憶體開銷。

PDF生成流程的下一步是什麼?

使用 IronPDF,在 ASP.NET Core 應用程式中將 ASP HTML 轉換為 PDF 變得非常簡單。 此函式庫基於 Chrome 的渲染技術可確保準確轉換,同時提供豐富的自訂選項,用於產生專業文件。 探索進階功能,例如PDF/A 合規性數位簽章表單建立

無論是處理 HTML 字串、URL 或完整的網頁,IronPDF 都能保留精確的格式、CSS 樣式和 JavaScript 行為。 這款基於 .NET 的 Web 應用程式工具能夠有效率地處理整個 PDF 轉換過程。 考慮探索PDF 壓縮浮水印元資料管理,以實現完整的文件控制。

立即開始您的 30 天免費試用,在您的ASP.NET Core 應用程式中實現專業的 PDF 生成功能。 需要幫忙挑選嗎? 查看許可選項或預約我們團隊的演示。 對於企業部署,請了解我們的專業許可等級。

IronPDF 的許可頁面顯示了四個定價等級(Lite、Plus、Professional 和 Unlimited),每個等級對開發者、地點和專案數量都有不同的限制

常見問題解答

在 ASP.NET Core 中將 HTML 轉換為 PDF 的最佳方式是什麼?

在 ASP.NET Core 中將 HTML 轉換為 PDF 的最佳方法是使用 IronPDF for .NET。它提供了轉換 HTML 內容的無縫解決方案,可確保產生高品質的 PDF。

為什麼要使用 IronPDF 將 HTML 轉換為 PDF?

IronPdf 提供了強大的功能,例如精確的渲染、對 CSS 和 JavaScript 的支援,以及處理複雜 HTML 文件的能力。這使它成為從 ASP.NET 應用程式產生專業級 PDF 的理想選擇。

IronPDF 可以處理 ASP.NET 應用程式中的動態內容嗎?

是的,IronPDF 可以有效處理 ASP.NET 應用程式中的動態內容。它可以處理動態 HTML 內容並將其轉換成 PDF,因此非常適合建立發票、報告和其他文件。

是否可以在使用 IronPDF 生成的 PDF 中包含 CSS 样式?

當然,IronPdf 支援 CSS 樣式。您可以套用現有的 CSS 樣式表,以確保 PDF 輸出符合 HTML 內容的設計與排版。

IronPDF 如何在 HTML 到 PDF 的轉換中支援 JavaScript?

IronPDF 完全支援 JavaScript,讓您可以在 HTML 中加入動態元素和互動內容,並在生成的 PDF 中準確呈現。

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

常見的使用案例包括:產生發票、建立詳細報告、製作證書,以及直接從 ASP.NET 應用程式提供電子書和小冊子等可下載內容。

IronPDF 如何確保 PDF 輸出的品質?

IronPDF 可準確呈現 HTML 內容,包括字型、圖片、表格及其他元素,並維持原始設計的真實性,以確保高品質的 PDF 輸出。

我可以使用 IronPDF 自動完成 HTML 到 PDF 的轉換過程嗎?

是的,IronPDF 可以集成到 ASP.NET 應用程式的自動化工作流程中,讓您可以自動將 HTML 轉換為 PDF,作為應用程式流程的一部分。

Curtis Chau
技術撰稿人

Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。