ChromiumHtmlToPdf:Net跨平台轻松将HTML转换为PDF
什么是 ChromiumHtmlToPdf?
ChromiumHtmlToPdf 是一个 100% 纯托管的 C# .NETStandard 2.0 库和 .NET 8 控制台应用程序,也适用于 Linux 和 macOS。它利用 Google Chrome 或 Microsoft Edge 浏览器将 HTML 转换为 PDF 格式,(MIT 许可证授权)。
从 4.0 版本开始,该库已完全支持异步操作,但仍然可以选择不使用异步功能。
一个替代 wkHtmlToPdf 的工具。虽然 wkHtmlToPdf 是一个很棒的工具,但该项目已在 GitHub 上归档,不再添加新功能,且与 HTML5 的兼容性也不够完美。
安装使用
在 Visual Studio 的包管理器控制台中,输入以下命令:
代码语言:javascript代码运行次数:0运行复制Install-Package ChromeHtmlToPdf
从代码中转换文件或网址
代码语言:javascript代码运行次数:0运行复制using ChromiumHtmlToPdfLib;
using ChromiumHtmlToPdfLib.Settings;
namespaceChromeHtmlToPdfDemo
{
internalclassProgram
{
static void Main(string[] args)
{
// 创建 PageSettings 实例
var pageSettings = new PageSettings();
// 创建输入 URI
var inputUri = new ConvertUri("/");
// 创建输出流(例如,保存到文件)
using (var outputStream = new FileStream(@"dotnetshare.pdf", FileMode.Create, FileAccess.Write))
{
// 创建 Converter 实例
using (var converter = new Converter())
{
// 调用 ConvertToPdf 方法
converter.ConvertToPdf(inputUri, outputStream, pageSettings);
}
}
}
}
}
当然也可以使用异步方式
在 Linux 或 macOS 上安装
安装 Chrome
关于如何在 Linux 上安装 Chrome,请参阅此链接:
关于如何在 macOS 上安装 Chrome,请参阅此链接:
在 Linux Ubuntu 上安装 Chrome 的示例
代码语言:javascript代码运行次数:0运行复制wget -q -O - .pub | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] / stable main" >> /etc/apt/sources.list.d/google.list'
sudo apt-get update
sudo apt-get install google-chrome-stable
google-chrome --version
google-chrome --no-sandbox --user-data-dir
问题
在 Linux 或 Docker 容器中使用该库
为了使库正常工作,--no-sandbox
标志将默认设置(在 Windows 上不会设置此标志)。该库会自动检测您运行代码的操作系统,并在需要时设置该标志。如果由于某种原因您遇到转换错误,请检查是否设置了该标志,如果没有,则手动添加它。
converter.AddChromiumArgument("--no-sandbox");
当 Chrome 在 Docker 容器中因未知原因崩溃时
在大多数桌面 Linux 发行版中,/dev/shm
分区的默认大小足够大。然而,在许多使用 Docker 容器的云提供商(如 Google App Engine Flexible Environment)或 Heroku 上,/dev/shm
的默认大小明显较小(分别为 64MB 和 5MB)。在这些平台上,无法更改 /dev/shm
的大小,这使得使用 Chrome 变得困难甚至不可能,尤其是对于那些希望利用其新的无头模式的用户。
如果无法更改分区大小,则添加 --disable-dev-shm-usage
标志,告知 Chrome 不要使用该分区。
converter.AddChromiumArgument("--disable-dev-shm-usage");
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-28,如有侵权请联系 cloudcommunity@tencent 删除异步html容器pdf跨平台