C#中為.NET開發人員的HTML到PDF(終極指南)
介紹
在當今以網路為主導的世界中,將 HTML 內容轉換為 PDF 文件(便攜式文件格式)的能力對於許多應用程式來說是一項至關重要的功能。 無論是從報告、發票產生 PDF 文件,或是存檔網頁內容,HTML 轉 PDF 都能簡化工作流程,並確保高品質 PDF 的格式一致。 IronPDF等程式庫提供了一種對開發者友善的方式來處理這種轉換,支援動態內容、 HTML 表單以及CSS和JavaScript的精確渲染。
對於 .NET 開發人員來說,使用正確的HTML 轉 PDF 轉換器會影響效率、程式碼簡潔性和 PDF 生成品質。 現代函式庫允許開發人員只需幾行程式碼即可將 HTML 字串、整個網頁或 HTML 文件直接轉換為渲染後的 PDF 文檔,從而實現動態文檔、自訂標題和可列印的 Web 內容版本。
你將學到什麼
在本指南中,您將學習如何在 C# 中使用多個程式庫將 HTML 轉換為 PDF,並探索它們的 PDF 轉換功能,包括操作 PDF 文件、HTML 表單、自訂邊距和安全 PDF。 本文將涵蓋以下主題:
1.為什麼要將 HTML 工具與 PDF 工具比較?
- IronPDF:HTML 轉 PDF
- Aspose:HTML 轉 PDF
- iText 9:HTML 轉 PDF
- wkhtmltopdf:HTML 轉 PDF 轉換
- PuppeteerSharp:HTML 轉 PDF 7.結論:為什麼選擇 IronPDF?
到最後,您就會明白為什麼IronPDF是一款對開發者友好且有效率的 HTML 轉 PDF 轉換器。 請務必查看我們的其他比較指南,其中我們深入研究了IronPDF與Aspose.PDF 、 iText 9 、 wkhtmltopdf和PuppeteerSharp的比較,以了解哪款軟體最適合您的項目,以及 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 程式碼片段。
Example:
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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com生成的PDF文檔
針對 .NET 開發人員的 C# HTML 轉 PDF(終極指南):圖 2
解釋:
ChromePdfRenderer:ChromePdfRenderer類別是 IronPDF 中將 HTML 轉換為 PDF 的主要工具。 它預先配置好,只需極少的設定即可處理大多數使用場景。RenderHtmlAsPdf:此方法接受一個 HTML 字串作為輸入,並產生一個 PDF 文件。SaveAs:產生的 PDF 檔案儲存到指定路徑(output.pdf)。
本地 HTML 檔案轉 PDF
對於需要轉換本機 HTML 檔案(包含 CSS 或 JavaScript 等外部資源)的應用程序,IronPDF 讓轉換變得輕鬆簡單。
Example:
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");
}
}Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlFileAsPdf("template.html")
pdf.SaveAs("report.pdf")
End Sub
End Class輸入 HTML 文件
針對 .NET 開發人員的 C# HTML 轉 PDF(終極指南):圖 3
Output
針對 .NET 開發人員的 C# HTML 轉 PDF(終極指南):圖 4
解釋:
- RenderHtmlFileAsPdf:將本機 HTML 檔案轉換為 PDF。
- 自動處理連結資源,例如外部 CSS 和 JavaScript 檔案。
URL 至 PDF
IronPDF 在轉換來自URL 的動態 Web 內容(包括使用 JavaScript 的頁面)時尤其強大。
Example:
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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comOutput
針對 .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 字串時需要更多的設定。
Example:
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");Imports Aspose.Html
Imports Aspose.Html.Saving
Private doc As New Document()
Private page As Page = doc.getPages().Add()
Private htmlFragment As New HtmlFragment("<h1>HTML String</h1>")
page.getParagraphs().Add(htmlFragment)
doc.Save("HTMLStringUsingDOM.pdf")Output
針對 .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 需要更多的配置。
Example:
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");Imports Aspose.Html
Imports Aspose.Html.Converters
Imports Aspose.Html.Saving
Private document = New HTMLDocument("document.html")
Private options = New PdfSaveOptions()
Converter.ConvertHTML(document, options, "output.pdf")輸入HTML程式碼:
針對 .NET 開發人員的 C# HTML 轉 PDF(終極指南):圖 8
Output:
針對 .NET 開發人員的 C# HTML 轉 PDF(終極指南):圖 9
解釋:
- var document = new HTMLDocument("document.html"):載入 HTML 檔案。
- var options:建立一個新的 PdfSaveOptions 物件。
- Converter.ConvertHTML():將 HTML 轉換為 PDF。
URL 至 PDF
Aspose 為 URL 提供了類似的功能,但需要額外的設定。
Example:
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");IRON VB CONVERTER ERROR developers@ironsoftware.comOutput
針對 .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 文件的基本範例。
Example:
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);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comOutput
本地 HTML 檔案轉 PDF
iText 9 可以使用 HtmlConverter.ConvertToPdf 類別將 HTML 檔案類型轉換為 PDF。
Example:
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);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comOutput
針對 .NET 開發人員的 C# HTML 轉 PDF(終極指南):圖 13
解釋:
- HtmlConverter:直接將 HTML 檔案轉換為 PDF。
URL 至 PDF
iText7 也支援轉換來自 URL 的內容。
Example:
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);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comOutput
針對 .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 字串寫入檔案轉換。
Example:
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}");
}
}Imports System
Imports System.IO
Imports System.Diagnostics
Friend Class Program
Shared Sub Main(ByVal args() As String)
' HTML string to be converted to PDF
Dim html As String = "<html><body><h1>Hello, World!</h1></body></html>"
' Write HTML string to temporary file
Dim tempHtmlFile As String = Path.Combine(Path.GetTempPath(), "temp.html")
File.WriteAllText(tempHtmlFile, html)
' Set output PDF path
Dim outputPdfFile As String = Path.Combine(Path.GetTempPath(), "html-string-to-pdf.pdf")
' Execute wkhtmltopdf command
Dim process As 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}")
End Sub
End ClassOutput
針對 .NET 開發人員的 C# HTML 轉 PDF(終極指南):圖 16
解釋:
- wkhtmltopdf需要一個輸入文件,所以我們先將 HTML 字串寫入暫存檔案 (temp.html)。 然後我們使用 Process 類別來執行wkhtmltopdf命令,並將臨時 HTML 檔案的檔案路徑和所需的輸出 PDF 路徑作為參數傳遞。
- 轉換完成後,我們會刪除臨時 HTML 檔案以進行清理。
本地 HTML 檔案轉 PDF
若要使用wkhtmltopdf將本機 HTML 檔案轉換為 PDF,您可以直接指定 HTML 檔案的檔案路徑。
Example:
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}");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comOutput
針對 .NET 開發人員的 C# HTML 轉 PDF(終極指南):圖 17
解釋:
- 此範例僅提供本機 HTML 檔案 (template.html) 的路徑和 PDF 的輸出路徑。
- wkhtmltopdf直接處理本地文件,使命令操作簡單明了。
URL 至 PDF
使用wkhtmltopdf可以輕鬆地將 URL 轉換為 PDF。 只需將 URL 直接傳遞給命令即可。
Example:
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}");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comOutput
針對 .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 字串需要將其寫入檔案或直接在瀏覽器中渲染。
Example:
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();
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comOutput
針對 .NET 開發人員的 C# HTML 轉 PDF(終極指南):圖 20
解釋:
- Puppeteer.LaunchAsync:以無頭模式啟動 Chromium 的新實例。
- page.SetContentAsync:將 HTML 字串載入到瀏覽器頁面中。
- page.PdfAsync:將載入的 HTML 轉換為 PDF 並將其儲存到文件中。
本地 HTML 檔案轉 PDF
若要使用 PuppeteerSharp 將本機 HTML 檔案轉換為 PDF,您可以將該檔案載入到無頭瀏覽器中並產生 PDF。
Example:
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();
}
}Imports PuppeteerSharp
Imports System
Imports System.Threading.Tasks
Friend Class Program
Shared Async Function Main(ByVal args() As String) As Task
' Download the browser if necessary
Await (New BrowserFetcher()).DownloadAsync(BrowserFetcher.DefaultRevision)
Dim browser = Await Puppeteer.LaunchAsync(New LaunchOptions With {.Headless = True})
Dim 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()
End Function
End ClassOutput
針對 .NET 開發人員的 C# HTML 轉 PDF(終極指南):圖 21
解釋:
- page.GoToAsync:載入本機 HTML 檔案(請確保使用正確的
[file://]()路徑)。 - page.PdfAsync:將本機 HTML 檔案的內容轉換為 PDF。
URL 至 PDF
將 URL 轉換為 PDF 是 PuppeteerSharp 的核心功能之一,因為它能夠處理包含 JavaScript 的複雜頁面。
Example:
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();
}
}Imports PuppeteerSharp
Imports System
Imports System.Threading.Tasks
Friend Class Program
Shared Async Function Main(ByVal args() As String) As Task
' Download the browser if necessary
Await (New BrowserFetcher()).DownloadAsync(BrowserFetcher.DefaultRevision)
Dim browser = Await Puppeteer.LaunchAsync(New LaunchOptions With {.Headless = True})
Dim 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()
End Function
End ClassOutput
針對 .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 檔案時,有幾種強大的工具可供選擇,每種工具都提供獨特的功能和特性。 IronPDF 、 Aspose 、 iText 9 、 wkhtmltopdf和PuppeteerSharp都提供了強大的解決方案,可以將 HTML 內容轉換為專業級的 PDF 文件。 然而,為您的專案選擇合適的工具取決於整合的便利性、對動態內容的支援、效能和靈活性等因素。
| 工具 | HTML 字串到 PDF | HTML 檔案到 PDF | URL 到 PDF | 注意事項 |
|---|---|---|---|---|
IronPDF | 使用RenderHtmlAsPdf可以輕鬆處理 HTML 字串。易於使用,並可無縫整合到 .NET 應用程式中。 | 使用RenderHtmlFileAsPdf ,自動處理連結資源(CSS、JS)。 | 使用RenderUrlAsPdf ,支援 JavaScript 密集頁面和動態內容。 | 與 .NET 完全集成,是 .NET 開發人員的理想選擇。支援 HTML 字串、文件和 URL。 |
![]() Aspose | 需要更多設定。它使用Document物件中的HtmlFragment來轉換 HTML 字串。 | 需要HtmlDocument和PdfSaveOptions才能進行本機 HTML 檔案轉換。比 IronPDF 需要更多配置。 | 需要使用WebRequest進行額外設定以取得內容,然後再使用HtmlLoadOptions進行轉換。 | 它功能強大,可處理各種文檔,但設定過程可能較為複雜。適合處理更複雜的PDF文件。 |
![]() iText7 | 使用HtmlConverter.ConvertToPdf將 HTML 字串轉換為 PDF。 | 使用HtmlConverter.ConvertToPdf將本機 HTML 檔案轉換為 PDF。 | 與本地文件處理類似,使用HtmlConverter.ConvertToPdf 。 | 非常適合需要對 PDF 進行更多控制(而不僅僅是 HTML 轉 PDF)的開發人員。 |
![]() wkhtmltopdf | 首先將HTML字串寫入檔案轉換。然後使用命令列工具產生PDF文件。 | 透過指定檔案路徑,直接將本機 HTML 檔案轉換為 PDF 檔案。 | 透過將 URL 傳遞給命令列工具,直接將 URL 轉換為 PDF。 | 主要是一個命令列工具,可能需要額外的步驟才能整合到.NET中。最適合簡單的轉換。 |
![]() 傀儡師夏普 | 使用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 沒有任何關聯,也未獲得其認可或贊助。 所有產品名稱、標誌和品牌均為其各自擁有者的財產。 所提供的比較僅供參考,並且基於撰寫時可公開取得的資訊。



