Chrome 带有 HTML 字符串或文件的 Headless PrintToPDF?

Chrome Headless PrintToPDF with HTML String or File?

我正在开发基于 Unity3D 的应用程序,需要从 HTML 代码生成 PDF。我尝试了其他库,但它们要么超慢、过时,要么就我的目的而言非常昂贵。 因此,我正在考虑使用 Chrome 内置的 PrintToPDF 功能。

为了测试,以下代码可以生成 Google 主页(或任何站点)的 PDF,但我需要将 HTML 字符串转换为 PDF。

        System.Diagnostics.Process process = new System.Diagnostics.Process();
        process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        process.StartInfo.FileName = @"C:\Program Files\Google\Chrome\Application\chrome.exe";

        string arguments = @"--headless --print-to-pdf=""C:\Users\userName\desktop\myReport.pdf"" https://google.com";
        process.StartInfo.Arguments = arguments;
        process.Start();

是否可以输入带有 HTML 代码的字符串或本地存储的独立 HTML 文件以使用此方法转换为 PDF?

谢谢!

经过大量测试后,我发现我可以将路径传递给一个 HTML 文件,它接受一个网络 URL。据我所知,这在任何地方都没有记录,但只要路径格式正确,它就可以工作。这仅在 Windows (11) 上测试过,但我相信它也适用于 MacOS,只要所有路径都是正确的。

System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
process.StartInfo.FileName = @"C:\Program Files\Google\Chrome\Application\chrome.exe";

string arguments = @"--headless --disable-gpu --print-to-pdf=""C:\path\to\outputPDFFile.pdf"" ""C:\path\to\sourceHTMLFile.html""";
process.StartInfo.Arguments = arguments;
process.Start();

为了使其工作,需要存在 --headless 标志,否则它只会在您的浏览器中打开文件。

可以使用其他参数添加其他输出选项。 有关示例,请参阅 here