在 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 都具有最低保证的服务级别;此外,沙箱实施的 运行 时间限制可保护应用程序免受可能 运行 在同一台机器上
的其他资源密集型应用程序的不利影响
[...]
有多个库用于将 HTML 转换为 PDF。许多 Windows/.NET 特定版本利用 IE API,因此广泛利用 User32/GDI32。这些 API 在沙箱中大部分被阻止(无论计划如何),因此这些框架在沙箱中不起作用。
有些框架没有广泛利用 User32/GDI32(例如 wkhtmltopdf),我们正致力于在 Basic+ 中启用这些框架,就像我们启用 SQL 报告一样。
我创建了一个 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 都具有最低保证的服务级别;此外,沙箱实施的 运行 时间限制可保护应用程序免受可能 运行 在同一台机器上
的其他资源密集型应用程序的不利影响[...]
有多个库用于将 HTML 转换为 PDF。许多 Windows/.NET 特定版本利用 IE API,因此广泛利用 User32/GDI32。这些 API 在沙箱中大部分被阻止(无论计划如何),因此这些框架在沙箱中不起作用。
有些框架没有广泛利用 User32/GDI32(例如 wkhtmltopdf),我们正致力于在 Basic+ 中启用这些框架,就像我们启用 SQL 报告一样。