我已经创建了一个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"类的其他各种其他方法,但是遇到了相同的错误。
任何人都可以建议什么是原因,以及如何解决此问题?
对此的任何帮助将不胜感激。
pdf库中的大多数html都在Azure Web App Sandbox中被阻止。
所有Azure Web应用程序(以及移动应用程序/服务,WebJobs和功能)都在称为Sandbox的安全环境中运行。每个应用程序都在自己的沙箱中运行,将其执行与同一台机器上的其他实例分离,并提供额外的安全性和隐私性,否则这些安全性和隐私将无法使用。沙盒机制旨在确保在机器上运行的每个应用程序都将具有最低保证的服务水平;此外,沙箱强制执行的运行时限制可以保护应用程序不受其他资源密集型应用程序的不利影响,这些应用可能在同一机器上运行
[...]
PDF从HTML
有多个库将HTML转换为PDF。许多Windows/.NET特定版本都利用IE API,因此广泛利用User32/gdi32。这些API在沙箱中很大程度上被阻塞(无论计划如何),因此这些框架在沙箱中不起作用。
有些框架不利用用户32/gdi32广泛利用(例如,wkhtmltopdf),我们正在努力以基本 的方式启用这些框架。