关于Azure Function中的C#:HTML到Pdf库

Html to Pdf library in Azure Function

Azure函数显然尚不支持System.Drawing(sanbox信息)。运行对其具有依赖性的函数将引发以下消息:

1
System.Drawing is not supported on this platform.

我最初是在WebApp中使用Select.HtmlToPdf从HTML创建PDF文档。但是,由于将PDF生成移至Azure函数,因此不再是选择。

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

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

更新:该功能正在S1-App Service计划上运行。

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


这时,我创建了一个新的netcore2.0 Azure AppService API,该API支持Select.HtmlToPdf,并且可能会在短时间内仍无法使用netcore3.0的情况下将该功能移至容器。
该函数仅使用一些参数调用API,并且可以等待PDF生成异步。

正如Jerry所提到的,它可能与DinkToPdf一起使用。但是,模板html docs不得包含JavaScript,因此该解决方案对于我的用例无效。


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

这里是一个链接:
https://wkhtmltopdf.org/

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

我对PDF输出并不感到兴奋,但是可以完成工作。有很多选项可以使用,但是除了纵向或横向模式之外,它似乎对我没有太大的影响。


对于DinkToPdf,错误Qt: Could not initialize OLE (error 80070005)是由javascript标记或引用引起的。参见Travis所做的测试。删除js后,函数会成功返回PDF,但错误消息仍然存在。

我发现另一个库OpenHtmlToPdf适用于S1中的Azure函数(提到@Filip的B1)应用程序服务计划。只需从@Scott提供的示例中更改BuildPdf方法即可。尚未测试其性能。

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