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)
答案 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