Html 到 Azure 函数中的 Pdf 库

Html to Pdf library in Azure Function

Azure 函数显然还不支持 System.Drawing (sanbox info)。 运行 依赖于它的函数抛出以下消息:

System.Drawing is not supported on this platform.

我最初在 WebApp 中使用 Select.HtmlToPdf 从 HTML 创建 PDF 文档。但是,自从将 PDF 生成移动到 Azure 功能后,这不再是一种选择。

此外,推荐的库是 wkhtmltopdf,但似乎没有 .netstandard2.0 版本。

您将如何使用 Azure Functions (C#) 完成 PDF 生成?


更新:该功能在 S1 - 应用服务计划中 运行。

Update2:使用 OdeToCode 上显示的方法给出错误 Qt: Could not initialize OLE (error 80010106)

我最近提出了一个从 HTML 页生成 PDF 文件的解决方案。我也很难找到一个合适的框架来 运行 在 Azure 函数中。但我发现使用 wkhtmltopdf,我可以从 HTML 页生成 PDF 文档。

这是一个link: https://wkhtmltopdf.org/

我发现我可以 运行 使用的最低应用程序服务计划是:B1 服务计划。这不适用于消费计划。我使用实验性 Powershell 模式完成了此操作,但使用 C# 或任何其他受支持的语言也应该可以做到这一点。

我对 PDF 输出并不满意,但它完成了工作。有很多选项可供使用,但除了纵向或横向模式外,对我来说似乎没有太大区别。

对于DinkToPdf, the error Qt: Could not initialize OLE (error 80070005) is caused by javascript tags or references. See the test done by Travis。当 js 被移除时,Function returns PDF 成功但错误消息仍然存在。

我找到了@Scott 提供的另一个库OpenHtmlToPdf works for Azure Function in S1(B1+ as @Filip mentioned) App service plan. Just change BuildPdf method from the sample。还没有测试过它的性能。

private static byte[] BuildPdf(string html)
{
    return OpenHtmlToPdf.Pdf.From(html).Content();
}

此时我创建了一个支持 Select.HtmlToPdf 的新 netcore2.0 Azure AppService API,如果它仍然不能与 netcore3.0 一会儿。 该函数仅调用带有一些参数的 API 并且可以等待 PDF 生成异步。

Jerry has mentioned, it might work with DinkToPdf。但是,模板 html 文档不得包含 JavaScript,因此此解决方案对我的用例无效。