使用IRON SUITE

C#中為.NET開發人員的HTML到PDF(終極指南)

介紹

在當今以網路為主導的世界中,將 HTML 內容轉換為 PDF 文件(便攜式文件格式)的能力對於許多應用程式來說是一項至關重要的功能。 無論是從報告、發票產生 PDF 文件,或是存檔網頁內容,HTML 轉 PDF 都能簡化工作流程,並確保高品質 PDF 的格式一致。 IronPDF等程式庫提供了一種對開發者友善的方式來處理這種轉換,支援動態內容、 HTML 表單以及CSSJavaScript的精確渲染。

對於.NET開發人員來說,使用正確的HTML 轉 PDF 轉換器會影響效率、程式碼簡潔性和 PDF 生成品質。 現代函式庫允許開發人員只需幾行程式碼即可將 HTML 字串、整個網頁或 HTML 文件直接轉換為渲染後的 PDF 文檔,從而實現動態文檔、自訂標題和可列印的 Web 內容版本。

你將學到什麼

在本指南中,您將學習如何在 C# 中使用多個程式庫將 HTML 轉換為 PDF,並探索它們的 PDF 轉換功能,包括操作 PDF 文件、HTML 表單、自訂邊距和安全 PDF。 本文將涵蓋以下主題:

1.為什麼要將 HTML 工具與 PDF 工具比較?

  1. IronPDF:HTML 轉 PDF
  2. Aspose:HTML 轉 PDF
  3. iText 9:HTML 轉 PDF
  4. wkhtmltopdf:HTML 轉 PDF 轉換
  5. PuppeteerSharp:HTML 轉 PDF 7.結論:為什麼選擇IronPDF?

到最後,您就會明白為什麼IronPDF是一款對開發者友好且有效率的 HTML 轉 PDF 轉換器。 請務必查看我們的其他比較指南,其中我們深入研究了IronPDFAspose.PDFiText 9wkhtmltopdfPuppeteerSharp的比較,以了解哪款軟體最適合您的項目,以及IronPDF為何脫穎而出。

為什麼要將HTML工具與PDF工具進行比較?

選擇合適的HTML 轉換 PDF 轉換工具對於確保您的應用程式符合效能、品質和成本要求至關重要。 由於市面上有許多選項,每個選項提供的 PDF 轉換功能各不相同,因此進行全面的比較有助於做出明智的決定。 以下是需要考慮的關鍵評估標準:

*整合複雜性:*此程式庫與您現有的.NET專案整合的難易程度,例如使用NuGet套件管理器進行簡單安裝和 API 整合標籤設定。 程式碼簡潔性:易於編寫和維護原始程式碼,包括最少的程式碼範例,例如只需幾行程式碼即可將 HTML 字串或整個網頁轉換為生成的 PDF 文件。 渲染精度:渲染引擎​​在產生高品質 PDF 的同時,準確處理 HTML 程式碼、 JavaScript執行、列印 CSS、HTML 表單和其他動態內容的能力。 大規模效能:** PDF 轉換器在從多個 HTML 頁面或動態內容產生 PDF 檔案時,在高負載下的效能表現。 *許可證和成本效益:定價模式(例如商業許可)以及是否適合您的專案預算。

透過評估這些因素,開發人員可以選擇既符合技術要求又符合財務限制的工具,無論是在 Visual Studio 中使用.NET Core或.NET Framework專案。

IronPDF:HTML 轉 PDF

. .NET開發人員的C# HTML轉PDF(終極指南):圖1

IronPDF是一個功能齊全的.NET庫,專為開發人員設計。 它提供開箱即用的方法,只需極少的設定即可將 HTML 字串、本機檔案和即時 URL 轉換為 PDF。其基於 Chrome 的渲染引擎確保了高精度,並支援 CSS 和JavaScript。 IronPDF是商業軟體,但提供強大的技術支援和簡單易用的API。

轉換為 PDF 的 HTML 字串

使用IronPDF將 HTML字串轉換為 PDF非常簡單。 這種方法非常適合動態內容生成或小型 HTML 程式碼片段。

例子:

using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
        pdf.SaveAs("output.pdf");
    }
}
using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
        pdf.SaveAs("output.pdf");
    }
}
$vbLabelText   $csharpLabel

生成的PDF文檔

. .NET開發人員的C# HTML轉PDF(終極指南):圖2

解釋:

  1. ChromePdfRenderer: ChromePdfRenderer 類別是IronPDF中將 HTML 轉換為 PDF 的主要工具。 它預先配置好,只需極少的設定即可處理大多數使用場景。
  2. RenderHtmlAsPdf:此方法接受 HTML 字串作為輸入,並產生 PDF 文件。
  3. SaveAs:產生的 PDF 檔案儲存到指定路徑 (output.pdf)。

本地 HTML 檔案轉 PDF

對於需要轉換本機 HTML 檔案(包含 CSS 或JavaScript等外部資源)的應用程序, IronPDF讓轉換變得輕鬆簡單。

例子:

using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderHtmlFileAsPdf("template.html");
        pdf.SaveAs("report.pdf");
    }
}
using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderHtmlFileAsPdf("template.html");
        pdf.SaveAs("report.pdf");
    }
}
$vbLabelText   $csharpLabel

輸入 HTML 文件

. .NET開發人員的C# HTML轉PDF(終極指南):圖3

輸出

. .NET開發人員的C# HTML轉PDF(終極指南):圖4

解釋:

  • RenderHtmlFileAsPdf:將本機 HTML 檔案轉換為 PDF。
  • 自動處理連結資源,例如外部 CSS 和JavaScript檔案。

PDF檔案的URL

IronPDF在轉換來自URL 的動態 Web 內容(包括使用JavaScript 的頁面)時尤其強大。

例子:

using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
        renderer.RenderingOptions.WaitFor.RenderDelay(3000); // Wait up to 3 seconds for JS to load

        PdfDocument pdf = renderer.RenderUrlAsPdf("https://apple.com");
        pdf.SaveAs("url-to-pdf.pdf");
    }
}
using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
        renderer.RenderingOptions.WaitFor.RenderDelay(3000); // Wait up to 3 seconds for JS to load

        PdfDocument pdf = renderer.RenderUrlAsPdf("https://apple.com");
        pdf.SaveAs("url-to-pdf.pdf");
    }
}
$vbLabelText   $csharpLabel

輸出

. .NET開發人員的C# HTML轉PDF(終極指南):圖5

解釋:

  • RenderUrlAsPdf:取得 URL 內容(包括 JavaScript 渲染的元素),並將其轉換為 PDF。

結論/何時使用

IronPDF非常適合需要輕鬆整合 API、編寫最少程式碼以及支援操作 PDF 文件、建立動態文件、HTML 表單、自訂標題和可列印版本的 Web 內容的開發人員。 非常適合在 Visual Studio 中開發.NET Core或.NET Framework專案。

Aspose:HTML 轉 PDF 轉換

. .NET開發人員的C# HTML轉PDF(終極指南):圖6

Aspose.PDF 是另一個功能強大的 PDF 處理庫,支援將 HTML 轉換為 PDF。 讓我們看看 Aspose 是如何處理每種轉換場景的:

轉換為 PDF 的 HTML 字串

與IronPDF相比,Aspose 在轉換 HTML 字串時需要更多的設定。

例子:

using Aspose.Html;
using Aspose.Html.Saving;

Document doc = new Document();
Page page = doc.getPages().Add();
HtmlFragment htmlFragment = new HtmlFragment("<h1>HTML String</h1>");
page.getParagraphs().Add(htmlFragment);
doc.Save("HTMLStringUsingDOM.pdf");
using Aspose.Html;
using Aspose.Html.Saving;

Document doc = new Document();
Page page = doc.getPages().Add();
HtmlFragment htmlFragment = new HtmlFragment("<h1>HTML String</h1>");
page.getParagraphs().Add(htmlFragment);
doc.Save("HTMLStringUsingDOM.pdf");
$vbLabelText   $csharpLabel

輸出

. .NET開發人員的C# HTML轉PDF(終極指南):圖7

解釋:

*文件 doc:建立一個新文件來儲存轉換後的 HTML 字串。

  • Page page:此行程式碼會為我們建立的空白文件新增一個新頁面。
  • HtmlFragment htmlFragment:這是我們要轉換的 HTML 字串。
  • page.getParagraphs().Add(htmlFragment):將 HTML 加入到文件中。
  • doc.Save:將包含 HTML 內容的文件儲存為 PDF 文件。

本地 HTML 檔案轉 PDF

Aspose 也支援將本機 HTML 檔案轉換為 PDF,但它比IronPDF需要更多的配置。

例子:

using Aspose.Html;
using Aspose.Html.Converters;
using Aspose.Html.Saving;

var document = new HTMLDocument("document.html");
var options = new PdfSaveOptions();
Converter.ConvertHTML(document, options, "output.pdf");
using Aspose.Html;
using Aspose.Html.Converters;
using Aspose.Html.Saving;

var document = new HTMLDocument("document.html");
var options = new PdfSaveOptions();
Converter.ConvertHTML(document, options, "output.pdf");
$vbLabelText   $csharpLabel

輸入HTML程式碼:

. .NET開發人員的C# HTML轉PDF(終極指南):圖8

輸出:

. .NET開發人員的C# HTML轉PDF(終極指南):圖9

解釋:

  • var document = new HTMLDocument("document.html"):載入 HTML 檔案。
  • var options:建立一個新的 PdfSaveOptions 物件。
  • Converter.ConvertHTML():將 HTML 轉換為 PDF。

PDF檔案的URL

Aspose 為 URL 提供了類似的功能,但需要額外的設定。

例子:

using System.IO;
using System;
using System.Net.Http;
using Aspose.Pdf;

HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("https://www.apple.com");
response.EnsureSuccessStatusCode();
string responseFromServer = await response.Content.ReadAsStringAsync();
MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseFromServer));
HtmlLoadOptions options = new HtmlLoadOptions("https://www.apple.com");
Document pdfDocument = new Document(stream, options);
pdfDocument.Save("WebPageToPDF_out.pdf");
using System.IO;
using System;
using System.Net.Http;
using Aspose.Pdf;

HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("https://www.apple.com");
response.EnsureSuccessStatusCode();
string responseFromServer = await response.Content.ReadAsStringAsync();
MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseFromServer));
HtmlLoadOptions options = new HtmlLoadOptions("https://www.apple.com");
Document pdfDocument = new Document(stream, options);
pdfDocument.Save("WebPageToPDF_out.pdf");
$vbLabelText   $csharpLabel

輸出

. .NET開發人員的C# HTML轉PDF(終極指南):圖10

解釋:

  • 變數 dataDir 儲存產生的 PDF 檔案的保存目錄。
  • 建立一個 WebRequest 來存取維基百科主頁 URL,請求使用預設憑證。
  • GetResponse() 方法發送請求並以 HttpWebResponse 的形式檢索回應。
  • 從回應中取得流,StreamReader 將頁面的整個 HTML 內容讀取到 responseFromServer 字串中。
  • 來自 responseFromServer 的 HTML 內容轉換為位元組數組,然後載入到 MemoryStream 中。
  • HtmlLoadOptions 用於指定相對連結的基本 URL 和其他設定。
  • 從包含 HTML 的記憶體流中建立一個 Aspose.Pdf.Document,並將文件儲存為 PDF 到指定目錄。

結論/何時使用

Aspose.PDF 最適合需要進階 PDF 處理和轉換的企業專案。 它功能強大,但對於快速的 HTML 轉 PDF 任務來說不夠簡潔高效。

iText 9:HTML 轉 PDF

. .NET開發人員的C# HTML轉PDF(終極指南):圖11

iText 9是 iText PDF 函式庫的最新版本,為在.NET應用程式中產生和操作 PDF 文件提供了增強的功能。 它引入了更精簡、更具可擴展性的 API,提高了效能,並更好地支援現代 PDF 標準。

轉換為 PDF 的 HTML 字串

以下是使用 iText 9 將 HTML 字串轉換為 PDF 文件的基本範例。

例子:

using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main()
    {
        string html = "<h1>Hello World</h1><p>This is a simple PDF generated from HTML.</p>";
        string outputFile = "SimpleHtmlToPdf.pdf";

        using (var pdfStream = new FileStream(outputFile, FileMode.Create))
        {
            HtmlConverter.ConvertToPdf(html, pdfStream);
        }

        System.Console.WriteLine("PDF generated: " + outputFile);
    }
}
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main()
    {
        string html = "<h1>Hello World</h1><p>This is a simple PDF generated from HTML.</p>";
        string outputFile = "SimpleHtmlToPdf.pdf";

        using (var pdfStream = new FileStream(outputFile, FileMode.Create))
        {
            HtmlConverter.ConvertToPdf(html, pdfStream);
        }

        System.Console.WriteLine("PDF generated: " + outputFile);
    }
}
$vbLabelText   $csharpLabel

輸出

. .NET開發人員的C# HTML轉PDF(終極指南):圖12

本地 HTML 檔案轉 PDF

iText 9 可以使用 HtmlConverter.ConvertToPdf 類別將 HTML 檔案類型轉換為 PDF。

例子:

using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main()
    {
        string htmlFile = "document.html";
        string outputPdf = "html-file-to-pdf.pdf";

        // Read HTML content from file
        string htmlContent = File.ReadAllText(htmlFile);

        // Convert HTML string to PDF
        HtmlConverter.ConvertToPdf(htmlContent, new FileStream(outputPdf, FileMode.Create));

        System.Console.WriteLine("PDF generated: " + outputPdf);
    }
}
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main()
    {
        string htmlFile = "document.html";
        string outputPdf = "html-file-to-pdf.pdf";

        // Read HTML content from file
        string htmlContent = File.ReadAllText(htmlFile);

        // Convert HTML string to PDF
        HtmlConverter.ConvertToPdf(htmlContent, new FileStream(outputPdf, FileMode.Create));

        System.Console.WriteLine("PDF generated: " + outputPdf);
    }
}
$vbLabelText   $csharpLabel

輸出

. .NET開發人員的C# HTML轉PDF(終極指南):圖13

解釋:

  • HtmlConverter:直接將 HTML 檔案轉換為 PDF。

PDF檔案的URL

iText7 也支援轉換來自 URL 的內容。

例子:

using iText.Html2pdf;
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        string url = "https://apple.com";
        string outputPdf = "url-to-pdf.pdf";

        using var httpClient = new HttpClient();
        // Fetch the HTML content from the URL
        string htmlContent = await httpClient.GetStringAsync(url);

        // Convert HTML content to PDF
        HtmlConverter.ConvertToPdf(htmlContent, new FileStream(outputPdf, FileMode.Create));

        Console.WriteLine("PDF generated: " + outputPdf);
    }
}
using iText.Html2pdf;
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        string url = "https://apple.com";
        string outputPdf = "url-to-pdf.pdf";

        using var httpClient = new HttpClient();
        // Fetch the HTML content from the URL
        string htmlContent = await httpClient.GetStringAsync(url);

        // Convert HTML content to PDF
        HtmlConverter.ConvertToPdf(htmlContent, new FileStream(outputPdf, FileMode.Create));

        Console.WriteLine("PDF generated: " + outputPdf);
    }
}
$vbLabelText   $csharpLabel

輸出

. .NET開發人員的C# HTML轉PDF(終極指南):圖14

解釋:

  • HttpClient.GetStringAsync(url):從 URL 下載實際的 HTML 內容。
  • HtmlConverter.ConvertToPdf(htmlContent, …):將取得的 HTML 字串轉換為渲染的 PDF。

結論/何時使用

iText 9 適用於需要強大的企業級解決方案來建立、操作 PDF 以及將 HTML 轉換為 PDF 的開發人員。 當您需要對生成的 PDF 進行精確控制、與現有 iText 工作流程集成,或使用數位簽章和表單等高級 PDF 功能時,它能很好地發揮作用。 然而,對於簡單的 HTML 轉 PDF 任務,iText 9 比IronPDF等精簡庫更笨重、更複雜。

wkhtmltopdf:HTML 轉 PDF 轉換

. .NET開發人員的C# HTML轉PDF(終極指南):圖15

存檔和維護狀態

需要注意的是, wkhtmltopdf已不再積極維護。 其GitHub儲存庫已於 2023 年 1 月正式存檔並標記為唯讀,這意味著不會再進行任何更新、錯誤修復或安全性修補程式。

對開發者的影響:雖然 wkhtmltopdf 對於非常基本的用例仍然有效,但由於其未維護狀態和過時的渲染引擎,它成為一個有風險的選擇——尤其是在生產環境或處理動態或外部 HTML 內容的應用程式中。

wkhtmltopdf 是一個命令列工具,它使用 Webkit 渲染將 HTML 檔案轉換為 PDF。 以下是它在不同情況下的運作方式:

轉換為 PDF 的 HTML 字串

wkhtmltopdf需要先將 HTML 字串寫入檔案轉換。

例子:

using System;
using System.IO;
using System.Diagnostics;
class Program
{
    static void Main(string[] args)
    {
        // HTML string to be converted to PDF
        string html = "<html><body><h1>Hello, World!</h1></body></html>";
        // Write HTML string to temporary file
        string tempHtmlFile = Path.Combine(Path.GetTempPath(), "temp.html");
        File.WriteAllText(tempHtmlFile, html);
        // Set output PDF path
        string outputPdfFile = Path.Combine(Path.GetTempPath(), "html-string-to-pdf.pdf");
        // Execute wkhtmltopdf command
        Process process = new Process();
        process.StartInfo.FileName = "wkhtmltopdf";
        process.StartInfo.Arguments = $"\"{tempHtmlFile}\" \"{outputPdfFile}\"";
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process.Start();
        process.WaitForExit();
        // Clean up the temporary HTML file
        File.Delete(tempHtmlFile);
        Console.WriteLine($"PDF saved to: {outputPdfFile}");
    }
}
using System;
using System.IO;
using System.Diagnostics;
class Program
{
    static void Main(string[] args)
    {
        // HTML string to be converted to PDF
        string html = "<html><body><h1>Hello, World!</h1></body></html>";
        // Write HTML string to temporary file
        string tempHtmlFile = Path.Combine(Path.GetTempPath(), "temp.html");
        File.WriteAllText(tempHtmlFile, html);
        // Set output PDF path
        string outputPdfFile = Path.Combine(Path.GetTempPath(), "html-string-to-pdf.pdf");
        // Execute wkhtmltopdf command
        Process process = new Process();
        process.StartInfo.FileName = "wkhtmltopdf";
        process.StartInfo.Arguments = $"\"{tempHtmlFile}\" \"{outputPdfFile}\"";
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process.Start();
        process.WaitForExit();
        // Clean up the temporary HTML file
        File.Delete(tempHtmlFile);
        Console.WriteLine($"PDF saved to: {outputPdfFile}");
    }
}
$vbLabelText   $csharpLabel

輸出

. .NET開發人員的C# HTML轉PDF(終極指南):圖16

解釋:

  • wkhtmltopdf需要一個輸入文件,所以我們先將 HTML 字串寫入暫存檔案 (temp.html)。 然後我們使用 Process 類別來執行wkhtmltopdf命令,並將臨時 HTML 檔案的檔案路徑和所需的輸出 PDF 路徑作為參數傳遞。
  • 轉換完成後,我們會刪除臨時 HTML 檔案以進行清理。

本地 HTML 檔案轉 PDF

若要使用wkhtmltopdf將本機 HTML 檔案轉換為 PDF,您可以直接指定 HTML 檔案的檔案路徑。

例子:

using System;
using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        // Path to the local HTML file
        string htmlFilePath = @"C:\path\to\your\document.html";
        // Path for the output PDF file
        string outputPdfFile = @"C:\path\to\output\html-file-to-pdf.pdf";
        // Execute wkhtmltopdf command
        Process process = new Process();
        process.StartInfo.FileName = "wkhtmltopdf";
        process.StartInfo.Arguments = $"\"{htmlFilePath}\" \"{outputPdfFile}\"";
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process.Start();
        process.WaitForExit();
        Console.WriteLine($"PDF saved to: {outputPdfFile}");
    }
}
using System;
using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        // Path to the local HTML file
        string htmlFilePath = @"C:\path\to\your\document.html";
        // Path for the output PDF file
        string outputPdfFile = @"C:\path\to\output\html-file-to-pdf.pdf";
        // Execute wkhtmltopdf command
        Process process = new Process();
        process.StartInfo.FileName = "wkhtmltopdf";
        process.StartInfo.Arguments = $"\"{htmlFilePath}\" \"{outputPdfFile}\"";
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process.Start();
        process.WaitForExit();
        Console.WriteLine($"PDF saved to: {outputPdfFile}");
    }
}
$vbLabelText   $csharpLabel

輸出

. .NET開發人員的C# HTML轉PDF(終極指南):圖17

解釋:

  • 此範例僅提供本機 HTML 檔案 (template.html) 的路徑和 PDF 的輸出路徑。
  • wkhtmltopdf直接處理本地文件,使命令操作簡單明了。

PDF檔案的URL

使用wkhtmltopdf可以輕鬆地將 URL 轉換為 PDF。 只需將 URL 直接傳遞給命令即可。

例子:

using System;
using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        // URL to be converted to PDF
        string url = "https://apple.com";
        // Path for the output PDF file
        string outputPdfFile = @"C:\path\to\output\url-to-pdf.pdf";
        // Execute wkhtmltopdf command
        Process process = new Process();
        process.StartInfo.FileName = "wkhtmltopdf";
        process.StartInfo.Arguments = $"\"{url}\" \"{outputPdfFile}\"";
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process.Start();
        process.WaitForExit();
        Console.WriteLine($"PDF saved to: {outputPdfFile}");
    }
}
using System;
using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        // URL to be converted to PDF
        string url = "https://apple.com";
        // Path for the output PDF file
        string outputPdfFile = @"C:\path\to\output\url-to-pdf.pdf";
        // Execute wkhtmltopdf command
        Process process = new Process();
        process.StartInfo.FileName = "wkhtmltopdf";
        process.StartInfo.Arguments = $"\"{url}\" \"{outputPdfFile}\"";
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process.Start();
        process.WaitForExit();
        Console.WriteLine($"PDF saved to: {outputPdfFile}");
    }
}
$vbLabelText   $csharpLabel

輸出

. .NET開發人員的C# HTML轉PDF(終極指南):圖18

解釋:

  • 在此範例中, wkhtmltopdf直接接受 URL 作為輸入。
  • URL 作為參數傳遞給wkhtmltopdf ,輸出結果以 PDF 格式儲存到指定路徑。

PuppeteerSharp:HTML 轉 PDF

. .NET開發人員的C# HTML轉PDF(終極指南):圖19

PuppeteerSharp是 Google Puppeteer 的.NET封裝器,可對無頭 Chrome/Chromium 進行控制。 它在渲染 JavaScript 密集型動態頁面方面表現出色,但需要下載和管理 Chromium 實例,這會增加開銷。 它是根據 Apache 2.0 協定開源的。

轉換為 PDF 的 HTML 字串

Puppeteer 是為渲染完整頁面而設計的,因此轉換 HTML 字串需要將其寫入檔案或直接在瀏覽器中渲染。

例子:

using PuppeteerSharp;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
       // Download the browser if necessary
        await new BrowserFetcher().DownloadAsync();
        var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
        var page = await browser.NewPageAsync();
        string htmlContent = "<h1>Hello, World!</h1><p>This is a PDF generated from HTML string.</p>";
        await page.SetContentAsync(htmlContent);
        // Save the page as a PDF
        await page.PdfAsync("html-string-to-pdf.pdf");
        await browser.CloseAsync();
    }
}
using PuppeteerSharp;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
       // Download the browser if necessary
        await new BrowserFetcher().DownloadAsync();
        var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
        var page = await browser.NewPageAsync();
        string htmlContent = "<h1>Hello, World!</h1><p>This is a PDF generated from HTML string.</p>";
        await page.SetContentAsync(htmlContent);
        // Save the page as a PDF
        await page.PdfAsync("html-string-to-pdf.pdf");
        await browser.CloseAsync();
    }
}
$vbLabelText   $csharpLabel

輸出

. .NET開發人員的C# HTML轉PDF(終極指南):圖20

解釋:

  • Puppeteer.LaunchAsync:以無頭模式啟動 Chromium 的新實例。
  • page.SetContentAsync:將 HTML 字串載入到瀏覽器頁面中。
  • page.PdfAsync:將載入的 HTML 轉換為 PDF 並將其儲存到文件中。

本地 HTML 檔案轉 PDF

若要使用 PuppeteerSharp 將本機 HTML 檔案轉換為 PDF,您可以將該檔案載入到無頭瀏覽器中並產生 PDF。

例子:

using PuppeteerSharp;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Download the browser if necessary
        await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
        var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
        var page = await browser.NewPageAsync();

        // Load the local HTML file
        await page.GoToAsync("file:///path/to/your/template.html");

        // Save the page as a PDF
        await page.PdfAsync("html-file-to-pdf.pdf");
        await browser.CloseAsync();
    }
}
using PuppeteerSharp;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Download the browser if necessary
        await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
        var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
        var page = await browser.NewPageAsync();

        // Load the local HTML file
        await page.GoToAsync("file:///path/to/your/template.html");

        // Save the page as a PDF
        await page.PdfAsync("html-file-to-pdf.pdf");
        await browser.CloseAsync();
    }
}
$vbLabelText   $csharpLabel

輸出

. .NET開發人員的C# HTML轉PDF(終極指南):圖21

解釋:

  • page.GoToAsync:載入本機 HTML 檔案(請確保使用正確的路徑)。
  • page.PdfAsync:將本機 HTML 檔案的內容轉換為 PDF。

PDF檔案的URL

將 URL 轉換為 PDF 是 PuppeteerSharp 的核心功能之一,因為它能夠處理包含JavaScript 的複雜頁面。

例子:

using PuppeteerSharp;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Download the browser if necessary
        await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
        var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
        var page = await browser.NewPageAsync();

        // Navigate to the URL
        await page.GoToAsync("https://example.com");

        // Save the page as a PDF
        await page.PdfAsync("url-to-pdf.pdf");
        await browser.CloseAsync();
    }
}
using PuppeteerSharp;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Download the browser if necessary
        await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
        var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
        var page = await browser.NewPageAsync();

        // Navigate to the URL
        await page.GoToAsync("https://example.com");

        // Save the page as a PDF
        await page.PdfAsync("url-to-pdf.pdf");
        await browser.CloseAsync();
    }
}
$vbLabelText   $csharpLabel

輸出

. .NET開發人員的C# HTML轉PDF(終極指南):圖22

解釋:

  • page.GoToAsync:導覽至指定的 URL。
  • page.PdfAsync:將 URL 處的網頁轉換為 PDF 並儲存。

結論/何時使用

當您需要對現代的、大量使用 JavaScript 的 Web 應用程式進行像素級精確渲染時,PuppeteerSharp 是理想之選。 它比IronPDF更複雜,但在處理動態網頁內容方面表現出色。

為什麼選擇IronPDF?

IronPDF 的優勢在於其易用性、靈活性以及與.NET應用程式的無縫整合。 它易於實現,支援 HTML、CSS 和JavaScript渲染,無需額外的設定或外部相依性。 除了 HTML 轉換 PDF 功能外, IronPDF還提供多種功能,例如從各種文件類型建立 PDF 文件編輯和添加現有 PDF 文件、添加浮水印、 PDF 文件安全性等等! 要了解該程式庫的更多實際應用,請務必查看操作指南,其中演示了其每個功能的實際應用。

結論

在 C# 中將 HTML 轉換為 PDF 檔案時,有幾種強大的工具可供選擇,每種工具都提供獨特的功能和特性。 IronPDFAsposeiText 9wkhtmltopdfPuppeteerSharp都提供了強大的解決方案,可以將 HTML 內容轉換為專業級的 PDF 文件。 然而,為您的專案選擇合適的工具取決於整合的便利性、對動態內容的支援、效能和靈活性等因素。

工具轉換為 PDF 的 HTML 字串HTML 檔案轉 PDFPDF檔案的URL筆記
IronPDF 的標誌
IronPDF
使用`RenderHtmlAsPdf`可以輕鬆處理 HTML 字串。易於使用,並可無縫整合到.NET應用程式中。使用`RenderHtmlFileAsPdf` ,自動處理連結資源(CSS、JS)。使用`RenderUrlAsPdf` ,支援 JavaScript 密集頁面和動態內容。與.NET完全集成,是.NET開發人員的理想選擇。支援 HTML 字串、文件和 URL。
Aspose 的標誌
Aspose
需要更多設定。它使用`Document`物件中的`HtmlFragment`來轉換 HTML 字串。需要`HtmlDocument`和`PdfSaveOptions`來進行本機 HTML 檔案轉換。比IronPDF需要更多配置。需要使用`WebRequest`進行額外設定以取得內容,然後再使用`HtmlLoadOptions`進行轉換。它功能強大,可處理各種文檔,但設定過程可能較為複雜。適合處理更複雜的PDF文件。
iText 的標誌
iText7
使用`HtmlConverter.ConvertToPdf`將 HTML 字串轉換為 PDF。使用`HtmlConverter.ConvertToPdf`將本機 HTML 檔案轉換為 PDF。與本地文件處理類似,使用`HtmlConverter.ConvertToPdf` 。非常適合需要對 PDF 進行更多控制(而不僅僅是 HTML 轉 PDF)的開發人員。
wkhtmltopdf 的標誌
wkhtmltopdf
首先將HTML字串寫入檔案轉換。然後使用命令列工具產生PDF文件。透過指定檔案路徑,直接將本機 HTML 檔案轉換為 PDF 檔案。透過將 URL 傳遞給命令列工具,直接將 URL 轉換為 PDF。主要是一個命令列工具,可能需要額外的步驟才能整合到.NET中。最適合簡單的轉換。
PuppeteerSharp 的標誌
PuppeteerSharp
使用`page.SetContentAsync`載入 HTML 字串,然後使用`page.PdfAsync`產生 PDF。透過`page.GoToAsync`載入本機 HTML 文件,然後將其轉換為 PDF。載入 URL 並使用`page.GoToAsync`和`page.PdfAsync`將其轉換為 PDF。最適合動態頁面,尤其是包含大量 JavaScript 的內容。需要下載並啟動 Chromium 瀏覽器。
  • IronPDF 的優勢在於其簡潔性、與.NET的直接整合以及處理複雜 HTML (包括 JavaScript 渲染的頁面)的能力。 對於正在尋找易於使用且設定最少的解決方案的開發人員來說,它是完美的選擇。

  • Aspose提供了豐富的 PDF 處理功能,但其 HTML 到 PDF 的轉換功能需要更多配置,尤其是在處理本機檔案和外部資源時。

  • iText 9為想要建立 PDF 文件的人提供了堅實的基礎,但可能需要額外的編碼才能將 HTML 轉換為 PDF,特別是對於動態內容。 對於需要自訂 PDF 處理的項目來說,這是一個絕佳的選擇。

  • wkhtmltopdf非常適合使用命令列介面進行基本的 HTML 到 PDF 轉換,但它缺乏完整的.NET庫的整合性和靈活性。

  • PuppeteerSharp利用無頭 Chrome,是渲染複雜、動態網頁並將其轉換為 PDF 的首選工具,尤其是在處理 JavaScript 內容時。

對於大多數尋求一體化、簡單易用的解決方案的 .NET開發人員來說, IronPDF值得您立即嘗試,親身體驗其強大的功能。 從產生新的 PDF 文件到編輯現有的 PDF,親自探索 IronPDF 的全部功能。 只要安裝IronPDF,然後使用免費試用版親自體驗即可。 看看它如何立即提升您的 PDF 工作流程。

最終,合適的工具取決於您的具體需求,但透過這裡討論的選項,您就能找到適合您專案的完美解決方案。

請注意: Aspose、iText、wkhtmltopdf 和 PuppeteerSharp 是其各自所有者的註冊商標。 本網站與 Aspose、iText、wkhtmltopdf 或 Puppeteer 沒有任何關聯,也未獲得其認可或贊助。 所有產品名稱、標誌和品牌均為其各自所有者的財產。 所提供的比較僅供參考,並且基於撰寫時可公開取得的資訊。