在 Azure Web App 中部署应用程序时无法使用 HiqPDF 生成 PDF

Unable to generate PDF using HiqPDF while application is deployed in Azure Web App

我创建了一个 ASP.NET MVC 应用程序 (.NET Framework 4.6.2),并使用 HiqPDF(版本 - 10.17.0)从 HTML 生成 PDF。

代码如下:

public static string ConvertHtmlToPdf(string pdfContentFilePath, string pdfOutputPath)
{            
    try
    {
        string fileName = pdfOutputPath + DateTime.Now.ToString("ddMMyyyyHHmmssf") + ".pdf";
        string pdfContents = System.IO.File.ReadAllText(pdfContentFilePath);

        HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
        htmlToPdfConverter.TrimToBrowserWidth = true;

        PdfDocument pdfDocumentObject = htmlToPdfConverter.ConvertHtmlToPdfDocument(pdfContents, null);
        pdfDocumentObject.WriteToFile(fileName);

        return fileName;
    }
    catch(Exception ex)
    {
        throw ex;
    }
}

我正在尝试使用非常基本的 HTML(只有一个粗体文本,没有图像,没有其他格式)。

此代码在本地环境下运行良好,并成功生成 PDF。但是,当我在 Azure 上部署此项目时,出现以下错误:

"Navigation Timeout"

我尝试了 "HtmlToPdf" class 的各种其他方法,但得到了同样的错误。

任何人都可以提出可能是什么原因以及如何解决这个问题吗?

如有任何帮助,我们将不胜感激。

大多数 HTML PDF 库在 Azure Web App Sandbox 中被屏蔽。

所有 Azure Web 应用程序(以及移动 App/Services、WebJobs 和 Functions)运行 在称为沙箱的安全环境中。每个应用程序 运行 都在自己的沙箱中,将其执行与同一台机器上的其他实例隔离开来,并提供额外的安全性和隐私性,否则将无法获得。沙箱机制旨在确保机器上的每个应用程序 运行ning 都具有最低保证的服务级别;此外,沙箱实施的 运行 时间限制可保护应用程序免受可能 运行 在同一台机器上

的其他资源密集型应用程序的不利影响

[...]

PDF Generation from HTML

有多个库用于将 HTML 转换为 PDF。许多 Windows/.NET 特定版本利用 IE API,因此广泛利用 User32/GDI32。这些 API 在沙箱中大部分被阻止(无论计划如何),因此这些框架在沙箱中不起作用。

有些框架没有广泛利用 User32/GDI32(例如 wkhtmltopdf),我们正致力于在 Basic+ 中启用这些框架,就像我们启用 SQL 报告一样。