摘要:ChromiumHtmlToPdf 是一个 100% 纯托管的 C# .NETStandard 2.0 库和 .NET 8 控制台应用程序,也适用于 Linux 和 macOS。它利用 Google Chrome 或 Microsoft Edge 浏览器将 H
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 的包管理器控制台中,输入以下命令:
Install-Package ChromeHtmlToPdf从代码中转换文件或网址usingChromiumHtmlToPdfLib;usingChromiumHtmlToPdfLib.Settings;
namespaceChromeHtmlToPdfDemo
{
internalclassProgram
{
staticvoidMain(stringargs)
{
// 创建 PageSettings 实例
varpageSettings =newPageSettings;
// 创建输入 URI
varinputUri =newConvertUri("https://www.dotnetshare.com/");
// 创建输出流(例如,保存到文件)
using(varoutputStream =newFileStream(@"dotnetshare.pdf", FileMode.Create, FileAccess.Write))
{
// 创建 Converter 实例
using(varconverter =newConverter)
{
// 调用 ConvertToPdf 方法
converter.ConvertToPdf(inputUri, outputStream, pageSettings);
}
}
}
}
}
当然也可以使用异步方式
安装 Chrome关于如何在 Linux 上安装 Chrome,请参阅此链接:
https://support.google.com/chrome/a/answer/9025903?hl=en
关于如何在 macOS 上安装 Chrome,请参阅此链接:
https://support.google.com/chrome/a/answer/7550274?hl=en
在 Linux Ubuntu 上安装 Chrome 的示例wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudoapt-key add -sudosh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
sudoapt-get update
sudoapt-get install google-chrome-stable
google-chrome --version
google-chrome --no-sandbox --user-data-dir为了使库正常工作,--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");
来源:opendotnet
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!