Невозможно создать PDF с использованием HiqPDF, когда приложение развернуто в Azure Web App. - PullRequest
0 голосов
/ 13 февраля 2019

Я создал приложение ASP.NET MVC (.NET Framework 4.6.2) и использую HiqPDF (версия - 10.17.0) для генерации PDF из HTML.

Ниже приведен код:

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», но получаю ту же ошибку.

Может кто-нибудь предложить, в чем может быть причина и как решить эту проблему?

Любая помощь по этому вопросу будет высоко ценится.

1 Ответ

0 голосов
/ 13 февраля 2019

Большинство библиотек HTML в PDF блокируются в изолированной программной среде веб-приложения Azure .

Все веб-приложения Azure (а также мобильные приложения / службы, веб-задания и функции) работают в защищенном режиме.среда называется песочницей.Каждое приложение запускается в своей собственной изолированной программной среде, изолируя его выполнение от других экземпляров на том же компьютере, а также обеспечивая дополнительную степень безопасности и конфиденциальности, которые в противном случае были бы недоступны.Механизм песочницы призван обеспечить минимальный гарантированный уровень обслуживания каждого приложения, работающего на компьютере;кроме того, ограничения времени выполнения, установленные песочницей, защищают приложения от неблагоприятного воздействия других ресурсоемких приложений, которые могут работать на той же машине

[...]

Генерация PDF из HTML

Для преобразования HTML в PDF используется несколько библиотек.Многие версии для Windows / .NET используют API-интерфейсы IE и, следовательно, широко используют User32 / GDI32.Эти API-интерфейсы в основном блокируются в песочнице (независимо от плана), и поэтому эти платформы не работают в песочнице.

Существуют некоторые платформы, которые не используют широко User32 / GDI32 (например, wkhtmltopdf), и мымы работаем над тем, чтобы включить их в Basic + так же, как мы включили SQL Reporting.

...