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

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

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

IronPDF能夠直接將 ZIP 套件中的 HTML 檔案渲染為 PDF,無需手動提取,它使用 RenderZipFileAsPdf 方法高效地將包含所有資源的壓縮 HTML 專案轉換為專業的 PDF 文件。

有些項目使用 ZIP 壓縮包來實現高效的儲存和傳輸。 如果需要渲染 ZIP 文件中包含的 HTML 文件,則無需手動提取其內容。 使用IronPDF,您可以直接從 ZIP 檔案渲染包含所有資源的整個專案。本文將示範如何輕鬆地將 HTML ZIP 套件轉換為 PDF。

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

只需幾行程式碼,即可使用IronPDF將 ZIP 套件中的 HTML 檔案轉換為 PDF。 本指南示範如何使用IronPDF庫的 RenderZipFileAsPdf 方法將壓縮的 HTML 內容轉換為精美的 PDF 文件。 這種方法省去了手動提取的步驟,使其成為將 PDF 生成整合到 C# 專案中的有效解決方案。

  1. 使用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?

以下是使用 RenderZipFileAsPdf 方法將 HTML ZIP 檔案轉換為 PDF 的範例。 RenderZipFileAsPdf 方法接受兩個參數:ZIP 檔案的路徑和 ZIP 檔案中的 HTML 檔案名稱。

轉換完成後,將 PDF 儲存為 output.pdf。 這種方法在處理包含外部 CSS、 JavaScript、圖像和其他資源打包在一起的完整 Web 專案時特別有用。 IronPDF 的Chrome PDF 渲染引擎可確保所有資源正確載入和渲染,從而保持原始 HTML 設計的視覺保真度。

進行 ZIP 轉換時應該使用什麼樣的 HTML 結構?

這是程式碼渲染出的 htmlSample.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 瀏覽器中的快速預覽:

在整理用於 ZIP 轉換的 HTML 檔案時,請保持正確的檔案結構。 與將單一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 檔案可用作 Web 內容的版本化快照,非常適合從特定專案狀態產生 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

3.快取:如果重複轉換相同的 ZIP 文件,請快取渲染後的 PDF 文件以提高效能。

與現有工作流程集成

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

結論

IronPDF 的 RenderZipFileAsPdf 方法提供了一種強大且有效率的方式,可以將包裝在 ZIP 檔案中的 HTML 項目直接轉換為 PDF 格式。 此功能無需手動提取和臨時文件管理,從而簡化您的 PDF 生成工作流程。 無論是歸檔網頁內容、從捆綁的 HTML 範本產生報告,或是處理批次轉換,此方法都能提供 C# 應用程式中專業 PDF 產生所需的靈活性和可靠性。

常見問題解答

在HTML ZIP文件上下文中,IronPDF的主要功能是什麼?

IronPDF允許您直接從ZIP文件中渲染整個HTML專案,包括所有資產,進入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的HTML文件,保證PDF輸出反映原始設計和功能。

在使用IronPDF之前是否需要從ZIP文件中提取HTML文件?

不,不需要從ZIP文件中提取HTML文件。IronPDF可以直接將ZIP文件中的內容渲染成PDF。

如何在使用IronPDF轉換後保存輸出PDF?

轉換後的PDF可以通過指定輸出路徑進行保存,如範例中所示,PDF被保存為`output.pdf`。

IronPDF中是否有特定的方法來處理ZIP文件?

是的,IronPDF中的`RenderZipFileAsPdf`方法專門用於處理和將HTML ZIP文件轉換為PDF。

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

是的,IronPDF 已经提供了预發布支持,并与即将發布的 .NET 10 版本(计划于 2025 年 11 月發布)完全兼容,在将 HTML ZIP 文件渲染為 PDF 時,使用的方式与其他 .NET 版本完全相同。

Regan related to HTML轉PDF:使用 C# 將 HTML ZIP 檔案轉換為 PDF
軟體工程師
Regan畢業於雷丁大學,獲得電子工程學士學位。在加入Iron Software之前,他的職位讓他專注於單一任務;而在Iron Software,他最享受的是能夠參與各種不同的工作,不論是增加銷售價值、技術支援、產品開發或行銷。他喜歡了解開發者使用Iron Software庫的方式,並利用這些知識來不斷完善文檔和開發產品。
準備好開始了嗎?
Nuget 下載 18,120,209 | 版本: 2026.4 剛剛發布
Still Scrolling Icon

還在捲動嗎?

想要快速證明? PM > Install-Package IronPdf
執行範例 觀看您的 HTML 變成 PDF。