LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

【C#】ChromiumHtmlToPdf:Net跨平台轻松将HTML转换为PDF,替代 wkHtmlToPdf 的开发库

admin
2025年3月22日 22:52 本文热度 133

什么是 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 的包管理器控制台中,输入以下命令:

Install-Package ChromeHtmlToPdf

从代码中转换文件或网址

using ChromiumHtmlToPdfLib;
using ChromiumHtmlToPdfLib.Settings;

namespaceChromeHtmlToPdfDemo
{
    internalclassProgram
    {
        static void Main(string[] args)
        {
            // 创建 PageSettings 实例
            var pageSettings = new PageSettings();

            // 创建输入 URI
            var inputUri = new ConvertUri("https://www.dotnetshare.com/");

            // 创建输出流(例如,保存到文件)
            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,请参阅此链接:

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 | sudo apt-key add -

sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ 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/3/24 17:09:09 编辑过
关键字查询
相关文章
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved