首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于.net内核2.2 azure函数a,无法使用dinktopdf加载dll libwkhtmltox

对于.net内核2.2 azure函数a,无法使用dinktopdf加载dll libwkhtmltox
EN

Stack Overflow用户
提问于 2019-06-26 06:00:08
回答 1查看 726关注 0票数 1

我有一个使用.net Core2.2的Azure函数应用程序,它是为将html文本转换为pdf而编写的。我正在使用DinkToPdf。当我运行函数时,我得到"Unable to load the libwkhtmltox.dll.我已经尝试了一些帖子中提到的替代解决方案,但它仍然抛出相同的错误。

我试着使用Directory.GetCurrentDirectory和path.combine

代码如下:

代码语言:javascript
运行
复制
        [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");
        }
}
EN

回答 1

Stack Overflow用户

发布于 2020-10-16 22:01:57

我在这个解决方案上也遇到了很多问题,但我认为其中一个问题可能是你的目录。尝试使用

代码语言:javascript
运行
复制
$@"{context.FunctionDirectory}\Dependencies\libwkhtmltox.dll");

而不是。你可以通过重载你的函数来访问执行上下文。

代码语言:javascript
运行
复制
  [HttpTrigger(AuthorizationLevel.Function, "get", Route = "iamgroot")] HttpRequest req, ExecutionContext context)

访问函数主机目录的Docs

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56762589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档