【问题标题】:How to use wkhtmltopdf and Azure Functions together to convert HTML to IMAGE?如何结合使用 wkhtmltopdf 和 A​​zure Functions 将 HTML 转换为 IMAGE?
【发布时间】:2018-10-22 12:26:51
【问题描述】:

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

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

首先你必须在应用服务器(你的开发系统或客户的系统)上安装 wkhtmltopdf

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

[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;
}

【问题讨论】:

标签: .net azure azure-functions wkhtmltopdf html-to-pdf


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 自从 dinktopdf 的最后一次更新是 5 年前,关于如何获得最新的编译 wkhtmltopdf 库可以与 dink2pdf 一起使用的任何想法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多