【问题标题】:Unable to generate PDF using HiqPDF while application is deployed in Azure Web App在 Azure Web App 中部署应用程序时,无法使用 HiqPDF 生成 PDF
【发布时间】:2019-02-13 13:34:03
【问题描述】:

我创建了一个 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 上部署此项目时,出现以下错误:

“导航超时”

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

谁能建议可能是什么原因,以及如何解决这个问题?

对此的任何帮助将不胜感激。

【问题讨论】:

    标签: .net asp.net-mvc azure azure-web-app-service hiqpdf


    【解决方案1】:

    大多数 HTML 到 PDF 库在 Azure Web App Sandbox 中被阻止。

    所有 Azure Web 应用程序(以及移动应用程序/服务、WebJobs 和函数)都在称为沙盒的安全环境中运行。每个应用程序都在自己的沙箱内运行,将其执行与同一台机器上的其他实例隔离开来,并提供额外的安全性和隐私性,否则这些应用程序将无法使用。沙盒机制旨在确保机器上运行的每个应用程序都具有最低保证的服务级别;此外,沙盒实施的运行时限制可保护应用免受可能在同一台机器上运行的其他资源密集型应用的不利影响

    [...]

    PDF Generation from HTML

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

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

    【讨论】:

    • 感谢您澄清为什么不支持它。希望这可以与其他一些图书馆一起解决。在那之前,我们需要在我们的应用程序中关闭此功能。再次感谢。
    • 想知道您是否可以在 Basic+ 中启用该功能时提供暂定时间表?目前,我们的 Azure 迁移几乎因此受阻,我们计划将其转换为 SSRS 报告,考虑到我们的代码库,这将需要付出巨大的努力。在此阶段您提供的信息将有助于我们做出正确的决定。
    • 抱歉,但我无法在公共论坛上评论路线图日期。我的建议是联系您的 Microsoft 客户团队,因为他们可能会根据 NDA 为您提供路线图。
    • 这也可能对你有用。 msdn.microsoft.com/en-us/magazine/…
    猜你喜欢
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    相关资源
    最近更新 更多