为 .NET 开发人员提供的 C# 中的 HTML 到 PDF 转换(终极指南)
简介
在当今以网络为主导的世界中,将HTML内容转换为PDF文档(便携文档格式)是许多应用程序的关键功能。 无论是生成报告、发票还是归档网页内容的PDF文件,HTML到PDF的转换简化了工作流程,并确保高质量PDF的一致格式。 像IronPDF这样的库为开发者提供了一种处理这种转换的方便途径,支持动态内容,HTML表单,以及CSS和JavaScript的精确渲染。
对于.NET开发人员来说,使用正确的HTML到PDF转换器影响效率、代码简洁性和PDF生成质量。 现代库允许开发人员直接将HTML字符串、整个网页或HTML文件转换为渲染的PDF文档,用几行代码实现动态文档、自定义标题和网页内容的可打印版本。
您将学习什么
在本指南中,您将学习如何在多个库中将HTML转换为C#中的PDF,并探索其PDF转换能力,包括操控PDF文档、HTML表单、自定义边距和安全PDF。 我们将在本文中涉及的主题有:
- 为什么要比较HTML到PDF的工具?
- IronPDF:HTML到PDF的转换
- Aspose:HTML到PDF的转换
- iText 9:HTML到PDF的转换
- wkhtmltopdf:HTML到PDF的转换
- PuppeteerSharp:HTML到PDF的转换
- 结论:为什么选择IronPDF?
到最后,您将了解为什么IronPDF作为开发者友好且高效的HTML到PDF转换器脱颖而出。 务必查看我们的其他比较指南,在那里我们深入比较IronPDF与,Aspose.PDF,iText 9,wkhtmltopdf和PuppeteerSharp,以便找出最适合您项目的,并了解IronPDF为何屡次获胜。
为什么要比较HTML到PDF的工具?
选择合适的HTML到PDF转换工具对于确保您的应用程序满足性能、质量和成本要求至关重要。 有许多可用选项,每个都提供不同的PDF转换能力,详尽的比较有助于做出明智的决定。 以下是需要考虑的关键评估标准:
- 集成复杂性:库如何轻松与现有的.NET项目集成,例如使用NuGet包管理器进行简单安装和API集成选项卡设置。
- 代码简洁性:书写和维护源代码的简便程度,包括最小代码示例,像是几行代码就可以转换HTML字符串或整个网页为生成的PDF文档。
- 渲染准确性:渲染引擎准确处理HTML代码、JavaScript执行、Print CSS、HTML表单和其他动态内容的能力,同时生成高质量的PDF。
- 大规模性能:PDF转换器在重负荷下从多个HTML页面或动态内容生成PDF文件时的性能。
- 许可和成本效益:定价模型,如商业许可,以及是否适合您项目的预算。
通过评估这些因素,开发人员可以选择适合技术需求和财务限制的工具,无论是在Visual Studio中处理.NET Core还是.NET Framework项目。
IronPDF:HTML到PDF转换

IronPDF是一个专为开发人员设计的全功能.NET库。 它提供现成的方法来转换HTML字符串、本地文件和实时URL为PDF,设置极其简单。其基于Chrome的渲染引擎确保高精度,包括对CSS和JavaScript的支持。 IronPDF是商业的,但提供强大的支持和易于理解的API。
HTML字符串到PDF
使用IronPDF将字符串转为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文档

解释:
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文件

Output

解释:
- RenderHtmlFileAsPdf:获取本地HTML文件并转为PDF。
- 自动处理链接资源,如外部CSS和JavaScript文件。
URL到PDF
IronPDF在转换URL的网站内容时尤其强大,包括使用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

解释:
- RenderUrlAsPdf:获取URL内容,包括JavaScript渲染的元素,并将其转换为PDF。
判决/适用时间
IronPDF适合需要简单API集成、最小代码并支持操控PDF文档、创建动态文档、HTML表单、自定义页眉和网页内容可打印版本的开发人员。 理想用于在Visual Studio中处理.NET Core或.NET Framework项目。
Aspose:HTML到PDF转换

Aspose.PDF是另一个强大的PDF操作库,支持HTML到PDF的转换。 我们来看Aspose如何处理每种转换场景:
HTML字符串到PDF
Aspose在转换HTML字符串时相比IronPDF需要更多设置。
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

解释:
- Document 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:

Output:

解释:
- 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

解释:
dataDir变量保存生成的PDF将被保存的目录。- 创建
WebRequest以访问Wikipedia主页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转换

iText 9是iText PDF库的最新迭代,提供增强的功能在.NET应用程序中生成和操控PDF文档。 它引入了更简化和可扩展的API,提高性能,并更好地支持现代PDF标准。
HTML字符串到PDF
这是一个如何从HTML字符串转换为PDF文档的基本示例,使用iText 9。
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

解释:
- 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

解释:
- 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转换

归档与维护状态
需要注意的是,wkhtmltopdf不再积极维护。 其GitHub存储库于2023年1月正式归档并标记为只读,意味着没有新的更新、bug修复或安全补丁被应用。
对开发者的影响:虽然wkhtmltopdf对非常基本的用例仍然有效,但其未维护状态和过时的渲染引擎使其成为一个风险选择——尤其是对生产环境或处理动态或外部HTML内容的应用程序。
wkhtmltopdf是一个使用Webkit渲染将HTML文件转换为PDF的命令行工具。 以下是它如何处理不同场景的工作原理:
HTML字符串到PDF
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

解释:
- 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

解释:
- 此示例简单地提供了本地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

解释:
- 在此示例中,
wkhtmltopdf直接接受URL作为输入。 - URL 作为参数传递给
wkhtmltopdf,输出保存为 PDF 到指定路径。
PuppeteerSharp:HTML到PDF转换

PuppeteerSharp是谷歌Puppeteer的一个.NET封装,提供对无头Chrome/Chromium的控制。 它擅长渲染JavaScript密集的、动态的页面,但需要下载和管理一个Chromium实例,这增加了开销。 它在Apache 2.0下开源。
HTML字符串到PDF
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

解释:
- 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

解释:
- 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

解释:
- page.GoToAsync:导航到指定的URL。
- page.PdfAsync:将URL上的网页转换为PDF并保存。
判决/适用时间
当您需要像素级渲染现代的、JavaScript密集的web应用时,PuppeteerSharp是理想选择。 它比IronPDF更复杂,但在处理动态web内容方面表现出色。
为什么选择 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无关联关系,不受其认可或赞助。 比较是基于写作时的公开信息,仅提供用于信息目的。)}] 这些比较仅供参考,并基于撰写时公开可用的信息。



