Невозможно загрузить dll libwkhtmltox с помощью dinktopdf для Azure-функции .net core2.2app - PullRequest
0 голосов
/ 26 июня 2019

У меня есть приложение-функция Azure, использующее .net Core 2.2, которое написано для преобразования html-текста в pdf. Я использую DinkToPdf. Когда я запускаю функцию, я получаю сообщение «Невозможно загрузить 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");
        }
}
...