如何同时使用 wkhtmltopdf 和 Azure Functions 将 HTML 转换为 IMAGE?



我有一个AF,我向它传递了一个带有网站的参数,该函数创建一个blob,其中包含将html转换为图像的blob。如何使用wkhtmltopdf执行此操作,因为我知道需要将一些.exe上传到我的Azure函数附近的某个地方,但并不完全理解整个过程。我从网站上下载了wkhtmltopdf安装程序,然后将其安装在我的Windows机器上。我需要在 Azure 上执行哪些操作?任何教程或课程?

我正在使用这个:https://github.com/mrdaghestani/HtmlPI 但是不明白这部分:

首先,您必须在应用程序服务器(您的开发系统或客户端的系统(上安装 wkhtmltopdf

如何在 Azure 上安装它,以便我的 Azure 函数在那里工作?

[FunctionName("htmlToImage")]
public static async Task<HttpResponseMessage> 
Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = 
null)]HttpRequest req, TraceWriter log)
{
string url = req.Query["url"];
byte[] EncodedData = Convert.FromBase64String(url);
string DecodedURL = Encoding.UTF8.GetString(EncodedData);
string requestBody = new StreamReader(req.Body).ReadToEnd();
dynamic data = JsonConvert.DeserializeObject(requestBody);
DecodedURL = DecodedURL ?? data?.name;
HtmlConverter htmlConverter = new HtmlConverter();
var filePath = htmlConverter.Convert(new GenerateSettings { Url = DecodedURL, OutputType = OutputType.Image });
//string BlobName = "myblob1";
//string ImageURL = await CreateBlob($"{BlobName}.png", (byte[])..., log);
var Result = new HttpResponseMessage(HttpStatusCode.OK);
//
// JSON
//
var oJSON = new { url = ImageURL, hash = BlobName };
var jsonToReturn = JsonConvert.SerializeObject(oJSON);
Result.Content = new StringContent(jsonToReturn);
Result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
return Result;
}

可以通过Kudu 访问函数应用的文件系统,可以通过 https://{你的函数应用名称}.scm.azurewebsites.net 访问,然后选择"调试控制台"> CMD 或 PowerShell。

在Azure Functions上使用wkhtmltopdf时有很多注意事项。

  • 至少需要一个基本 (B1( 计划才能运行可执行文件。
  • 其次,Windows仅支持32位wkhtmltopdf,因此您需要将函数切换到32位。
  • 正如Katy提到的,您需要通过Kudu访问系统,并根据操作系统将libwkhtmltox.dll(Windows(或 libwkhtmltox.dll.so(Linux(文件上传到站点的根文件夹中。

我建议您继续使用Linux基本计划,因为与Windows Basic计划相比,它更便宜。

可以在此处找到有关如何为 Azure Functions 设置 wkhtmltopdf 的综合博客。

最新更新