在Azure Function中将HTML转换为PDF库

时间:2018-10-20 23:55:08

标签: c# azure pdf-generation azure-functions .net-standard

Azure函数显然尚不支持System.Drawingsanbox 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)

3 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:1)

在这一点上,我创建了一个新的netcore2.0 Azure AppService API,该API支持Select.HtmlToPdf,并且如果此功能仍然无法与netcore3.0一起使用,则可能会将其移至容器中而。 该函数只需使用一些参数调用API,即可等待PDF生成异步。

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

答案 2 :(得分:0)

对于DinkToPdf,错误limit()是由javascript标记或引用引起的。请参见test done by Travis。删除js后,函数会成功返回PDF,但错误消息仍然存在。

我发现另一个库OpenHtmlToPdf适用于S1(提及@Filip的B1 +)应用服务计划中的Azure函数。只需从@Scott提供的sample中更改Qt: Could not initialize OLE (error 80070005)方法即可。尚未测试其性能。

BuildPdf