我有一个使用.net Core2.2的Azure函数应用程序,它是为将html文本转换为pdf而编写的。我正在使用DinkToPdf。当我运行函数时,我得到"Unable to load the libwkhtmltox.dll.我已经尝试了一些帖子中提到的替代解决方案,但它仍然抛出相同的错误。
我试着使用Directory.GetCurrentDirectory和path.combine
代码如下:
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
CustomAssemblyLoadContext context = new CustomAssemblyLoadContext();
var architectureFolder = (IntPtr.Size == 8) ? "64 bit" : "32 bit";
context.LoadUnmanagedLibrary($@"{Directory.GetCurrentDirectory()}\Dependencies\libwkhtmltox.dll");
var IocContainer = new SynchronizedConverter(new PdfTools());
string html = await new StreamReader(req.Body).ReadToEndAsync();
var globalSettings = new GlobalSettings
{
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
Margins = new MarginSettings { Top = 10 },
};
var objectSettings = new ObjectSettings
{
PagesCount = true,
WebSettings = { DefaultEncoding = "utf-8" },
HtmlContent = html
};
var pdf = new HtmlToPdfDocument()
{
GlobalSettings = globalSettings,
Objects = { objectSettings }
};
byte[] pdfBytes = null;// IocContainer.Convert(pdf);
return new FileContentResult(pdfBytes, "application/pdf");
}
}
发布于 2020-10-16 22:01:57
我在这个解决方案上也遇到了很多问题,但我认为其中一个问题可能是你的目录。尝试使用
$@"{context.FunctionDirectory}\Dependencies\libwkhtmltox.dll");
而不是。你可以通过重载你的函数来访问执行上下文。
[HttpTrigger(AuthorizationLevel.Function, "get", Route = "iamgroot")] HttpRequest req, ExecutionContext context)
访问函数主机目录的Docs
https://stackoverflow.com/questions/56762589
复制相似问题