使用 IRONPDF

如何使用 C# 在不使用庫的情況下將 HTML 轉換為 PDF

里根普恩
里根普恩
2025年4月3日
分享:

介紹

當涉及到在 C# 中將 HTML 轉換為 PDF 時,開發人員可能會考慮使用原生 .NET 功能,而不依賴外部函式庫。 雖然這種方法在某些情況下是可行的,但它也有其自身的優勢和挑戰。 本文將探討過程、優缺點,並討論為什麼像IronPDF這樣的庫可能是更好的選擇。

工作原理

使用內建的 .NET 工具,您可以透過渲染 HTML 內容並使用 WebBrowser 控件及 PrintDocument 類別來實現 HTML 到 PDF 的轉換。 這是一個簡化的工作流程:

  1. 將 HTML 內容寫入臨時檔案。

  2. 將 HTML 加載到 WebBrowser 控制項中進行渲染。

  3. 使用 PrintDocument 類別來創建一個列印任務,以輸出渲染的內容。

    雖然此方法避免了外部相依性,但它涉及到處理低階元件以及手動定義列印邏輯。

    如果您想在 C# 中將 HTML 轉換為 PDF,而不使用任何外部庫,您可以使用內建的 .NET 功能,如 System.IO 和 System.Drawing.Printing 來渲染 HTML,然後創建 PDF。 以下是一個基本範例來幫助您入門:

如何在不使用庫的情況下將 HTML 轉換為 PDF c

如何在不使用函式庫的情況下將 HTML 轉換為 PDF:C# 圖 1

從Pixabay添加上傳

或將圖片拖放到此處

新增圖片替代文字

using System;
using System.IO;
using System.Windows.Forms; // You need to add a reference to System.Windows.Forms
using System.Drawing.Printing;
class Program
{
    [STAThread] // Required for using WebBrowser control
    static void Main()
    {
        // HTML content
        string htmlContent = "<html><body><h1>Hello, World!</h1></body></html>";
        // Write HTML content to a temporary file
        string tempFilePath = Path.Combine(Path.GetTempPath(), "temp.html");
        File.WriteAllText(tempFilePath, htmlContent);
        // Create WebBrowser to render HTML
        WebBrowser webBrowser = new WebBrowser();
        webBrowser.DocumentCompleted += (sender, e) => 
        {
            // Print the document to a file
            PrintDocument printDoc = new PrintDocument();
            printDoc.PrintPage += (s, args) =>
            {
                args.Graphics.DrawString(htmlContent, new Font("Arial", 12), Brushes.Black, new PointF(100, 100));
            };
            // Save as PDF (or use PrintDialog for physical printing)
            printDoc.PrintController = new StandardPrintController(); // Silent print
            printDoc.Print(); // You'd need to replace this with PDF creation logic.
            Application.ExitThread(); // Close the application
        };
        // Load the HTML file
        webBrowser.Url = new Uri(tempFilePath);
        Application.Run();
    }
}
using System;
using System.IO;
using System.Windows.Forms; // You need to add a reference to System.Windows.Forms
using System.Drawing.Printing;
class Program
{
    [STAThread] // Required for using WebBrowser control
    static void Main()
    {
        // HTML content
        string htmlContent = "<html><body><h1>Hello, World!</h1></body></html>";
        // Write HTML content to a temporary file
        string tempFilePath = Path.Combine(Path.GetTempPath(), "temp.html");
        File.WriteAllText(tempFilePath, htmlContent);
        // Create WebBrowser to render HTML
        WebBrowser webBrowser = new WebBrowser();
        webBrowser.DocumentCompleted += (sender, e) => 
        {
            // Print the document to a file
            PrintDocument printDoc = new PrintDocument();
            printDoc.PrintPage += (s, args) =>
            {
                args.Graphics.DrawString(htmlContent, new Font("Arial", 12), Brushes.Black, new PointF(100, 100));
            };
            // Save as PDF (or use PrintDialog for physical printing)
            printDoc.PrintController = new StandardPrintController(); // Silent print
            printDoc.Print(); // You'd need to replace this with PDF creation logic.
            Application.ExitThread(); // Close the application
        };
        // Load the HTML file
        webBrowser.Url = new Uri(tempFilePath);
        Application.Run();
    }
}
Imports System
Imports System.IO
Imports System.Windows.Forms ' You need to add a reference to System.Windows.Forms
Imports System.Drawing.Printing
Friend Class Program
	<STAThread>
	Shared Sub Main()
		' HTML content
		Dim htmlContent As String = "<html><body><h1>Hello, World!</h1></body></html>"
		' Write HTML content to a temporary file
		Dim tempFilePath As String = Path.Combine(Path.GetTempPath(), "temp.html")
		File.WriteAllText(tempFilePath, htmlContent)
		' Create WebBrowser to render HTML
		Dim webBrowser As New WebBrowser()
		AddHandler webBrowser.DocumentCompleted, Sub(sender, e)
			' Print the document to a file
			Dim printDoc As New PrintDocument()
			AddHandler printDoc.PrintPage, Sub(s, args)
				args.Graphics.DrawString(htmlContent, New Font("Arial", 12), Brushes.Black, New PointF(100, 100))
			End Sub
			' Save as PDF (or use PrintDialog for physical printing)
			printDoc.PrintController = New StandardPrintController() ' Silent print
			printDoc.Print() ' You'd need to replace this with PDF creation logic.
			Application.ExitThread() ' Close the application
		End Sub
		' Load the HTML file
		webBrowser.Url = New Uri(tempFilePath)
		Application.Run()
	End Sub
End Class
$vbLabelText   $csharpLabel

程式碼說明

  1. WebBrowser 控制項用於呈現 HTML。

  2. PrintDocument 類別用來定義列印行為。

  3. 這個例子不會直接創建 PDF; 您需要擴展它以整合原始 PDF 創建邏輯,例如手動繪製文本和形狀,或處理流。

    這種方法有限,對於大型或帶有樣式的 HTML 文件可能會變得複雜。 如果您的使用情境允許,使用像 IronPDF 這樣的庫通常會更加高效且功能豐富。

使用內建 .NET 功能的優缺點

優點

  • 無外部依賴:避免外部庫可以減少管理專案中的第三方依賴關係的複雜性。
  • 免費:由於此方法僅使用本地 .NET 元件,因此無需支付授權費或額外費用。
  • 精細控制:您可以完全控制內容的渲染和列印方式,從而實現自定義處理。

缺點

  • 有限功能:內建的 .NET 工具缺乏準確呈現複雜 HTML、CSS 或 JavaScript 的能力。 可能不支援進階佈局、響應式設計或動態內容。
  • 耗時的實作:您需要撰寫自訂程式碼來處理渲染、分頁和 PDF 創建,這可能會導致較高的開發成本。
  • 低擴展性:對於大型或高性能應用程式,此方法可能效率低下且易於出現瓶頸。
  • 沒有原生 PDF 支援:工作流程無法直接建立 PDF; 您需要實現自定義邏輯來從列印輸出生成 PDF 文件。

IronPDF 介紹

如何在不使用程式庫的情況下將 HTML 轉換為 PDF C#:圖 2

從Pixabay添加上傳

或將圖片拖放到此處

新增圖片替代文字

IronPDF 是一個 .NET 函式庫,可以讓開發者輕鬆地將 HTML 轉換為 PDF。 它支持多種功能,包括 CSS、JavaScript,甚至嵌入式圖像。 使用 IronPDF,您可以創建外觀與您的 HTML 網頁完全相同的 PDF,確保格式之間的無縫銜接。 這個程式庫對於需要即時生成動態 PDF 文件的網路應用程式特別有用。

IronPDF 允許開發人員將 PDF 功能無縫整合到 .NET 應用程式中,而無需手動管理 PDF 檔案結構。 IronPDF 利用 基於 Chrome 的渲染引擎 將 HTML 頁面(包括複雜的 CSS、JavaScript 和圖像)轉換為結構良好的 PDF 文件。 它可以用於生成報告、發票、電子書或任何需要以 PDF 格式呈現的文件。

IronPDF 非常多功能,不僅可以呈現 PDF,還提供廣泛的 PDF 操作選項,例如編輯、表單處理、加密等。

IronPDF 的主要功能

  1. HTML 轉換為 PDF

    • HTML 渲染IronPDF 可以將 HTML 文件格式的文檔或網頁(包括帶有 CSS、圖片和 JavaScript 的 HTML)直接轉換為 PDF 文檔。 它也可以使用 HTML 模板進行轉換。 這非常適合從動態網頁內容生成 PDF。

    • 支持現代 HTML/CSS:IronPDF 處理現代的 HTML5、CSS3 和 JavaScript,確保您的基於網頁的內容準確生成 PDF,並保留其佈局、字體和互動元素。

    • 高級渲染:它使用 Chrome 的渲染引擎(透過 Chromium)進行精確、高品質的 PDF 生成,使其比許多其他 HTML-to-PDF 函式庫更可靠。
    • 網站網址轉PDFIronPDF 可以將網站的字串網址作為輸入並轉換為PDF。
  2. 自訂頁首和頁尾

    • IronPDF 允許開發者向 PDF 文件添加自訂的頁眉和頁腳,其中可以包含動態內容,例如頁碼、文件標題或自訂文本。
    • 頁眉和頁腳可以新增到單個頁面,或者作為整個文件中的一致元素。
  3. PDF 中的 JavaScript 支援

    • IronPDF 在生成 PDF 之前,允許在 HTML 內容中執行 JavaScript。 這允許動態內容渲染,例如表單計算或在生成的PDF中提供互動性。
    • JavaScript 在從動態網頁創建 PDF 或生成需要客戶端邏輯的報告時非常有用。
  4. 編輯現有 PDF

    • IronPDF 提供編輯現有 PDF 的功能。 您可以修改文字、圖像,並向現有的 PDF 文件添加註釋。 此功能對於在 PDF 文件中添加水印、簽名或更新內容非常有用。
    • 文本提取和修改允許您以編程方式操縱 PDF 文件中的內容。
  5. 合併及分割PDF

    • IronPDF 允許您將多個 PDF 文件合併成一個文件,或將較大的 PDF 拆分成較小的文件。 這非常適合需要合併或拆分文件以使其更易於管理的工作流程。
  6. 支援互動表單

    • 您可以使用 IronPDF 創建、填寫及處理 PDF 表單。 它提供對互動式表單(如文本字段、複選框和單選按鈕)的全面支持,並允許您用數據預填表單。
    • IronPDF 也可以從現有的 PDF 中提取表單數據,使得以程式方式讀取和處理表單數據變得簡單。
  7. 頁面操作

    • IronPDF 提供多種方法來操作 PDF 文檔中的各個頁面,例如旋轉頁面、刪除頁面或重新排序它們。 這有助於自訂最終文件的結構。
    • 您也可以將新頁面添加到現有的 PDF 中,或刪除不需要的頁面。
  8. 安全性和加密

    • IronPDF 可以對 PDF 檔案應用密碼保護和加密,確保您的文件安全無虞。 您可以設定使用者權限,例如防止列印、複製或編輯 PDF。
    • 數位簽名也可以新增到 PDF 中以驗證真實性,為機密文件提供一層安全保障。
  9. 浮水印和品牌設計

    • 使用 IronPDF 向 PDF 文件添加水印很容易。 您可以將文字或圖像作為浮水印疊加在頁面上,為您的文件提供防止未經授權的複製或分發的保護。
    • 此功能通常用於品牌塑造,當需要讓標誌或文字在文件的所有頁面上保持一致時。
    1. 文字與圖片擷取

      • IronPDF 允許從 PDF 文件中提取文字和圖像,使開發人員能夠提取數據以進行處理或重用。
    • 這對於需要分析 PDF 內容、從表單中提取信息或檢索圖像以供進一步使用的場景很有幫助。
    1. Unicode 和多語言支援

      • IronPDF 擁有強大的 Unicode 支援,這意味著它可以處理國際字符和字體,非常適合生成多語言的 PDF。
    • 它支持中文、阿拉伯語、俄語等語言,允許創建多語言 PDF 文件。
    1. 性能優化
    • IronPDF 經過性能優化,能夠處理大型 PDF 文件及高容量請求。 該庫確保即使在處理大型資料集或圖像時,PDF 生成仍然快速且高效。
    1. API 和開發者友好工具

      • IronPDF 具有全面且易於使用的 API。 開發人員可以透過使用簡單的方法調用來快速完成複雜的任務。
    • API 文件完整,使將 IronPDF 集成到任何 C# 或 .NET 應用程式中變得輕而易舉。
    1. 跨平台支援
    • IronPDF 是跨平台兼容的,這意味著它可以在 Windows 和 Linux 環境中使用,使您能夠在不同的操作系統中生成和操作 PDF。

如何使用 IronPDF 將 HTML 轉換為 PDF

class Program
{
    static void Main()
    {
        // Specify license key
        License.LicenseKey = "Yoour Key";
        // Create a new HtmlToPdf object
        var Renderer = new ChromePdfRenderer();
        // Define the HTML string/ HTML code to be converted, can use html document
        string htmlContent = "<html><body><h1>IronPDF: Easily Convert HTML to PDF</h1></body></html>";
        // Convert pdf simple HTML string to a PDF document
        var document = Renderer.RenderHtmlAsPdf(htmlContent);
        // Save the PDF output document to a file
        document.SaveAs("html2Pdf.pdf"); // path to pdf file generated
    }
}
class Program
{
    static void Main()
    {
        // Specify license key
        License.LicenseKey = "Yoour Key";
        // Create a new HtmlToPdf object
        var Renderer = new ChromePdfRenderer();
        // Define the HTML string/ HTML code to be converted, can use html document
        string htmlContent = "<html><body><h1>IronPDF: Easily Convert HTML to PDF</h1></body></html>";
        // Convert pdf simple HTML string to a PDF document
        var document = Renderer.RenderHtmlAsPdf(htmlContent);
        // Save the PDF output document to a file
        document.SaveAs("html2Pdf.pdf"); // path to pdf file generated
    }
}
Friend Class Program
	Shared Sub Main()
		' Specify license key
		License.LicenseKey = "Yoour Key"
		' Create a new HtmlToPdf object
		Dim Renderer = New ChromePdfRenderer()
		' Define the HTML string/ HTML code to be converted, can use html document
		Dim htmlContent As String = "<html><body><h1>IronPDF: Easily Convert HTML to PDF</h1></body></html>"
		' Convert pdf simple HTML string to a PDF document
		Dim document = Renderer.RenderHtmlAsPdf(htmlContent)
		' Save the PDF output document to a file
		document.SaveAs("html2Pdf.pdf") ' path to pdf file generated
	End Sub
End Class
$vbLabelText   $csharpLabel

程式碼片段說明

1. 許可金鑰設置

程式開始時設置IronPDF license key,這是解鎖程式庫完整功能所需的。

2. 建立渲染器

初始化一個 ChromePdfRenderer 實例。 此元件負責將 HTML 內容轉換為PDF 文件,作為原 HTML 與最終輸出之間的橋樑。

3. 定義 HTML 內容

一個字串變數 htmlContent 被創建來存儲將轉換為 PDF 的HTML 結構。 在這個範例中,它包含一個簡單的標題。

4. 將 HTML 轉換為 PDF

在 ChromePdfRenderer 實例上調用 RenderHtmlAsPdf() 方法,將 HTML 字串作為輸入。 此函式處理內容並將其轉換為PDF 文件

5. 儲存 PDF

最後,生成的 PDF 使用 SaveAs() 方法保存到名為 "html2Pdf.pdf" 的文件中,並存儲在磁碟上以供日後訪問。

輸出

如何將 HTML 轉換為 PDF C# 無需使用庫:圖 3

從Pixabay添加上傳

或將圖片拖放到此處

新增圖片替代文字

授權資訊(提供試用)

IronPDF 需要一個有效的授權金鑰才能完全運行。 您可以從官方網站獲取試用許可證。在使用IronPDF庫之前,請按照以下方式設置許可證密鑰:

IronPdf.License.LicenseKey = "your key";
IronPdf.License.LicenseKey = "your key";
IronPdf.License.LicenseKey = "your key"
$vbLabelText   $csharpLabel

這確保了該程式庫運行沒有限制。

結論

雖然使用內建的 .NET 功能進行 HTML 到 PDF 的轉換可能是處理簡單用例的一個可行解決方案,但它通常需要投入大量精力且缺乏現代功能。 相比之下,像IronPDF這樣的函式庫提供了強大的功能、更快的開發速度和對進階HTML渲染的支持,使其成為大多數開發人員的首選。 最終決定取決於您的專案需求、預算和開發優先事項。

里根普恩
軟體工程師
Regan 畢業於雷丁大學,擁有電子工程學士學位。在加入 Iron Software 之前,他的工作角色讓他專注於單一任務;而他在 Iron Software 工作中最喜歡的是他所能承擔的工作範圍,無論是增加銷售價值、技術支持、產品開發或市場營銷。他喜歡了解開發人員如何使用 Iron Software 庫,並利用這些知識不斷改進文檔和開發產品。
< 上一頁
HTML 轉 PDF 轉換器 C# 開源 (.NET 函式庫比較)
下一個 >
C# 生成 PDF 7 個庫比較(免費和付費工具)