如何在 C# 中將 HTML ZIP 檔案渲染為 PDF | IronPDF

使用 C# 將 HTML ZIP 檔案轉換為 PDF

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF 支援直接將 ZIP 壓縮檔中的 HTML 檔案渲染為 PDF,無需手動解壓縮。透過 `` 方法,可高效地將包含所有資源的壓縮 HTML 專案轉換為 Professional PDF 文件。

部分專案會使用 ZIP 壓縮檔以提升儲存與傳輸效率。 若需渲染 ZIP 檔案中的 HTML 檔案,無需手動解壓縮其內容。 透過 IronPDF,您可以直接從 ZIP 檔案渲染整個專案,包括所有資源。本文將示範如何輕鬆地將 HTML ZIP 套件轉換為 PDF。

快速入門:使用 IronPDF 將 HTML ZIP 轉換為 PDF

只需幾行代碼,即可使用 IronPDF 將 ZIP 壓縮包中的 HTML 檔案轉換為 PDF。 本指南將示範如何使用 IronPDF 函式庫的 `` 方法,將您的壓縮 HTML 內容轉為精美的 PDF 文件。 此方法可免除手動擷取的步驟,是將 PDF 生成功能整合至 C# 專案的高效解決方案。

  1. using NuGet 套件管理員安裝 https://www.nuget.org/packages/IronPdf

    PM > Install-Package IronPdf
  2. 請複製並執行此程式碼片段。

    new IronPdf.ChromePdfRenderer().RenderZipFileAsPdf("htmlSample.zip", "htmlSample.html").SaveAs("output.pdf");
  3. 部署至您的生產環境進行測試

    立即透過免費試用,在您的專案中開始使用 IronPDF

    arrow pointer

如何使用 IronPDF 將 HTML ZIP 檔案轉換為 PDF?

以下是一個範例,展示如何使用 方法將 HTML ZIP 檔案轉換為 PDF。 方法接受兩個參數:ZIP 檔案的路徑,以及 ZIP 檔案內的 HTML 檔案名稱。

轉換完成後,請將 PDF 儲存為 ``。 此方法在處理包含外部 CSS、JavaScript、圖片及其他資源的完整網頁專案時,尤為實用。 IronPDF 的 Chrome PDF 渲染引擎可確保所有資源皆能正確載入與渲染,並完整保留原始 HTML 設計的視覺呈現效果。

進行 ZIP 轉換時應採用何種 HTML 結構?

這是程式碼所渲染的 `` HTML 檔案:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Sample HTML with External CSS and JS</title>

  <link rel="stylesheet" href="style.css">
</head>
<body>
  <div class="container">
    <h1>Welcome to the Sample Page!</h1>
    <p id="greeting">Click the button to change the background color and greeting text.</p>
    <button id="changeButton">Change Background</button>
  </div>

  <script src="script.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Sample HTML with External CSS and JS</title>

  <link rel="stylesheet" href="style.css">
</head>
<body>
  <div class="container">
    <h1>Welcome to the Sample Page!</h1>
    <p id="greeting">Click the button to change the background color and greeting text.</p>
    <button id="changeButton">Change Background</button>
  </div>

  <script src="script.js"></script>
</body>
</html>
HTML

以下是在 Chromium 瀏覽器中的快速預覽:

在整理 HTML 檔案以進行 ZIP 壓縮時,請維持正確的檔案結構。 與將單一 HTML 檔案轉換為 PDF 或將 HTML 字串轉換為 PDF 不同,ZIP 檔案的轉換需要特別注意相對路徑與資源參照。 請確保 ZIP 壓縮檔內的所有 CSS 檔案、JavaScript 檔案、圖片及字型皆透過相對路徑正確引用。

如何實作 RenderZipFileAsPdf 方法?

:path=/static-assets/pdf/content-code-examples/how-to/html-zip-file-to-pdf.cs
ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderZipFileAsPdf("htmlSample.zip", @"htmlSample.html");

pdf.SaveAs("output.pdf");
ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderZipFileAsPdf("htmlSample.zip", @"htmlSample.html");

pdf.SaveAs("output.pdf");
ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderZipFileAsPdf("htmlSample.zip", @"htmlSample.html");

pdf.SaveAs("output.pdf");
Dim renderer As New ChromePdfRenderer()

Dim pdf As PdfDocument = renderer.RenderZipFileAsPdf("htmlSample.zip", "htmlSample.html")

pdf.SaveAs("output.pdf")
$vbLabelText   $csharpLabel

針對進階情境,可透過設定各種渲染選項來自訂渲染流程。 以下為包含額外設定的範例:

// Create a renderer with custom options
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Configure rendering options
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = false;

// Enable JavaScript execution for dynamic content
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500; // Wait 500ms for JS to execute

// Convert ZIP to PDF with custom settings
PdfDocument pdf = renderer.RenderZipFileAsPdf("htmlSample.zip", @"htmlSample.html");

// Apply additional PDF settings
pdf.Password = "secure123"; // Optional: Add password protection
pdf.CompressPdfDocument(); // Compress for smaller file size

// Save with metadata
pdf.MetaData.Author = "Your Application";
pdf.MetaData.Subject = "HTML ZIP to PDF Conversion";
pdf.MetaData.Keywords = "IronPDF, HTML, ZIP, PDF";
pdf.SaveAs("output.pdf");
// Create a renderer with custom options
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Configure rendering options
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = false;

// Enable JavaScript execution for dynamic content
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500; // Wait 500ms for JS to execute

// Convert ZIP to PDF with custom settings
PdfDocument pdf = renderer.RenderZipFileAsPdf("htmlSample.zip", @"htmlSample.html");

// Apply additional PDF settings
pdf.Password = "secure123"; // Optional: Add password protection
pdf.CompressPdfDocument(); // Compress for smaller file size

// Save with metadata
pdf.MetaData.Author = "Your Application";
pdf.MetaData.Subject = "HTML ZIP to PDF Conversion";
pdf.MetaData.Keywords = "IronPDF, HTML, ZIP, PDF";
pdf.SaveAs("output.pdf");
Imports IronPdf

' Create a renderer with custom options
Dim renderer As New ChromePdfRenderer()

' Configure rendering options
renderer.RenderingOptions.MarginTop = 25
renderer.RenderingOptions.MarginBottom = 25
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
renderer.RenderingOptions.PrintHtmlBackgrounds = True
renderer.RenderingOptions.CreatePdfFormsFromHtml = False

' Enable JavaScript execution for dynamic content
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.RenderDelay = 500 ' Wait 500ms for JS to execute

' Convert ZIP to PDF with custom settings
Dim pdf As PdfDocument = renderer.RenderZipFileAsPdf("htmlSample.zip", "htmlSample.html")

' Apply additional PDF settings
pdf.Password = "secure123" ' Optional: Add password protection
pdf.CompressPdfDocument() ' Compress for smaller file size

' Save with metadata
pdf.MetaData.Author = "Your Application"
pdf.MetaData.Subject = "HTML ZIP to PDF Conversion"
pdf.MetaData.Keywords = "IronPDF, HTML, ZIP, PDF"
pdf.SaveAs("output.pdf")
$vbLabelText   $csharpLabel

最終的 PDF 輸出文件會是什麼樣子?

以下是上述程式碼的最終輸出結果:

為何要將 HTML ZIP 檔案轉換為 PDF?

將 HTML ZIP 檔案轉換為 PDF 具有以下幾項優勢:

  1. 專案可攜性:ZIP 壓縮檔能完整保留資料夾結構與資產關聯性,便於傳輸且不會破壞參照關係。

  2. 批次處理:無需將檔案提取至暫存目錄,即可高效轉換多個 HTML 專案。

  3. 版本控制:ZIP 檔案作為網頁內容的版本化快照,非常適合用於從特定專案狀態生成 PDF 檔案。

  4. 資源管理:請將所有資產存放在 ZIP 檔案中,以避免檔案系統雜亂並簡化資源管理。

  5. 安全性:透過 ZIP 檔案處理可提升安全性,因為 HTML 內容在轉換前會保持壓縮狀態,並可能經過加密。

進階功能與最佳實務

在進行 HTML 轉 ZIP 轉 PDF 轉換時,請考慮以下進階功能:

基礎 URL 設定

對於具有嵌套資料夾結構的複雜專案,請設定基礎 URL 和資源編碼,以確保所有資源都能正確載入:

ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.BaseUrl = new Uri("file:///");
PdfDocument pdf = renderer.RenderZipFileAsPdf("project.zip", @"src/index.html");
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.BaseUrl = new Uri("file:///");
PdfDocument pdf = renderer.RenderZipFileAsPdf("project.zip", @"src/index.html");
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.BaseUrl = New Uri("file:///")
Dim pdf As PdfDocument = renderer.RenderZipFileAsPdf("project.zip", "src/index.html")
$vbLabelText   $csharpLabel

自訂紙張尺寸

IronPDF 支援自訂紙張尺寸,以滿足特殊文件需求:

renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.Custom;
renderer.RenderingOptions.CustomPaperWidth = 210; // in mm
renderer.RenderingOptions.CustomPaperHeight = 297; // in mm
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.Custom;
renderer.RenderingOptions.CustomPaperWidth = 210; // in mm
renderer.RenderingOptions.CustomPaperHeight = 297; // in mm
Imports IronPdf.Rendering

renderer.RenderingOptions.PaperSize = PdfPaperSize.Custom
renderer.RenderingOptions.CustomPaperWidth = 210 ' in mm
renderer.RenderingOptions.CustomPaperHeight = 297 ' in mm
$vbLabelText   $csharpLabel

錯誤處理

請實施完善的錯誤處理機制以應對潛在問題:

try 
{
    ChromePdfRenderer renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderZipFileAsPdf("htmlSample.zip", @"htmlSample.html");
    pdf.SaveAs("output.pdf");
    Console.WriteLine("PDF generated successfully!");
}
catch (Exception ex)
{
    Console.WriteLine($"Error converting ZIP to PDF: {ex.Message}");
}
try 
{
    ChromePdfRenderer renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderZipFileAsPdf("htmlSample.zip", @"htmlSample.html");
    pdf.SaveAs("output.pdf");
    Console.WriteLine("PDF generated successfully!");
}
catch (Exception ex)
{
    Console.WriteLine($"Error converting ZIP to PDF: {ex.Message}");
}
Imports System

Try
    Dim renderer As New ChromePdfRenderer()
    Dim pdf As PdfDocument = renderer.RenderZipFileAsPdf("htmlSample.zip", "htmlSample.html")
    pdf.SaveAs("output.pdf")
    Console.WriteLine("PDF generated successfully!")
Catch ex As Exception
    Console.WriteLine($"Error converting ZIP to PDF: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

效能考量

在轉換大型 ZIP 檔案或處理多重轉換時:

  1. 記憶體使用量:大型 ZIP 檔案會在記憶體中解壓縮。 監控應用程式的記憶體使用狀況,以獲得最佳效能。

  2. 非同步操作:使用非同步方法以提升應用程式的響應速度:
public async Task ConvertZipToPdfAsync(string zipPath, string htmlFile, string outputPath)
{
    ChromePdfRenderer renderer = new ChromePdfRenderer();
    PdfDocument pdf = await Task.Run(() => 
        renderer.RenderZipFileAsPdf(zipPath, htmlFile)
    );
    pdf.SaveAs(outputPath);
}
public async Task ConvertZipToPdfAsync(string zipPath, string htmlFile, string outputPath)
{
    ChromePdfRenderer renderer = new ChromePdfRenderer();
    PdfDocument pdf = await Task.Run(() => 
        renderer.RenderZipFileAsPdf(zipPath, htmlFile)
    );
    pdf.SaveAs(outputPath);
}
Imports System.Threading.Tasks

Public Async Function ConvertZipToPdfAsync(zipPath As String, htmlFile As String, outputPath As String) As Task
    Dim renderer As New ChromePdfRenderer()
    Dim pdf As PdfDocument = Await Task.Run(Function() renderer.RenderZipFileAsPdf(zipPath, htmlFile))
    pdf.SaveAs(outputPath)
End Function
$vbLabelText   $csharpLabel
  1. 快取:若需反覆轉換相同的 ZIP 檔案,請將渲染後的 PDF 檔案存入快取以提升效能。

與現有工作流程的整合

ZIP 轉 PDF 功能可與其他 IronPDF 功能無縫整合。 結合其儲存及匯出各種格式 PDF 文件、添加數位簽章或套用浮水印等功能,即可建立全面的文件處理工作流程。

結論

IronPDF 的 `` 方法提供了一種強大且高效的方式,可將封裝在 ZIP 檔案中的 HTML 專案直接轉換為 PDF 格式。 此功能可免除手動擷取與臨時檔案管理,從而簡化您的 PDF 生成工作流程。 無論是歸檔網頁內容、從內建的 HTML 範本生成報告,還是處理批次轉換,此方法皆能提供 C# 應用程式進行專業 PDF 生成所需的靈活性與可靠性。

常見問題

在 HTML ZIP 檔案的應用情境中,IronPDF 的主要功能為何?

IronPDF 讓您能夠將整個 HTML 專案(包含所有資源)直接從 ZIP 檔案渲染為 PDF 格式,無需手動提取內容。

如何使用 IronPDF 將 HTML ZIP 檔案轉換為 PDF?

您可以透過 IronPDF 的 `RenderZipFileAsPdf` 方法,將 HTML ZIP 檔案轉換為 PDF,此方法需要 ZIP 檔案的路徑以及其中 HTML 檔案的名稱。

應實例化哪個類別,才能開始將 HTML ZIP 檔案轉換為 PDF?

若要開始將 HTML ZIP 檔案轉換為 PDF,您應在 IronPDF 中實例化 `ChromePdfRenderer` 類別。

使用 IronPDF 將 HTML ZIP 檔案轉換為 PDF 的步驟為何?

步驟包括下載 IronPDF 函式庫、建立 `ChromePdfRenderer` 類別的實例、呼叫 `RenderZipFileAsPdf` 方法、傳入 HTML ZIP 檔案及其路徑,最後儲存 PDF 檔案。

IronPDF 能否處理 ZIP 檔案內 HTML 檔案中的外部 CSS 和 JavaScript?

是的,IronPDF 能夠渲染包含外部 CSS 和 JavaScript 的 ZIP 檔案中的 HTML 檔案,確保生成的 PDF 能完整呈現原始設計與功能。

在使用 IronPDF 之前,是否必須先從 ZIP 檔案中提取 HTML 檔案?

不需要,無需從 ZIP 檔案中提取 HTML 檔案。IronPDF 能直接將 ZIP 檔案內的內容渲染為 PDF。

如何在使用 IronPDF 轉換後儲存輸出 PDF 檔案?

轉換完成後,可透過指定輸出路徑來儲存 PDF 檔案,如範例中所示,PDF 檔案將儲存為 `output.pdf`。

IronPDF 中是否有處理 ZIP 檔案的特定方法?

是的,IronPDF 中的 `RenderZipFileAsPdf` 方法正是專門設計用於處理並將 HTML ZIP 檔案轉換為 PDF 檔案。

IronPDF 在將 HTML ZIP 檔案渲染為 PDF 時,是否相容於 .NET 10?

是的,IronPDF 已提供預發行版本支援,並完全相容於即將推出的 .NET 10 版本(預計於 2025 年 11 月發布)。在將 HTML ZIP 檔案渲染為 PDF 時,其使用方式與其他 .NET 版本完全相同。

Regan related to 使用 C# 將 HTML ZIP 檔案轉換為 PDF
軟體工程師
雷根畢業於雷丁大學,擁有電子工程學士學位。在加入 Iron Software 之前,他過去的工作職務往往需高度專注於單一任務;而在 Iron Software,他最享受的是能夠承擔多元化的工作,無論是為銷售、技術支援、產品開發或行銷增添價值。他樂於了解開發者如何使用 Iron Software 函式庫,並運用這些知識持續改進文件及開發產品。
準備開始了嗎?
Nuget 下載 18,918,602 | 版本: 2026.5 just released
Still Scrolling Icon

還在往下捲動嗎?

想要快速確認成果嗎? PM > Install-Package IronPdf
執行範例 觀看您的 HTML 轉為 PDF。