我正在将一个html文件转换成一个.net包装器"NReco.PdfGenerator“的pdf,用于在一个蔚蓝的web应用程序上使用wkhtmltopdf (运行在标准计划中),但不能在我的文档中包含自定义字体。PDF生成器不会加载自定义字体,也不会忽略它。我尝试过不同的格式来包含字体文件,比如链接到google字体css、从google字体导入、相对本地路径、绝对本地路径、通过本地主机加载字体文件以及使用base64编码的字体:
@@font-face {
font-family: 'testfont';
src: url(data:application/x-font-woff;charset=utf-8;base64,...) format('woff');
font-weight: normal;
font-style: normal;
}
与下列一起使用:
font-family: 'testfont';
@@因为我使用的是剃须刀视图。当将生成的HTML保存到文件中时,它看起来很好,在浏览器(chrome)中打开时工作也很好。
生成PDF:
var htmlToPdf = new NReco.PdfGenerator.HtmlToPdfConverter();
return htmlToPdf.GeneratePdf(html);
我还从字体-家族语句中删除了备份字体。我尝试过与wkhtmltopdf不同的版本,但没有运气。生成器发送来自本地主机的图像。
在我的windows机器上运行相同的asp.net应用程序时,字体工作得很好。
NReco文档说“避免使用自定义字体”(在蔚蓝的web应用环境中),这是否意味着没有机会让它运行?为什么不支持自定义字体?有什么解决办法吗?
谢谢你的帮助。
发布于 2017-07-16 16:30:10
这是已知的问题: Azure应用程序托管环境限制了一些GDI API,因此wkhtmltopdf无法加载(和呈现)自定义字体。默认情况下,只能使用Windows上的标准字体(比如Arial、等)。您可以联系Azure支持这个主题-他们可以提供更多有关Azure应用程序沙箱限制的详细信息。
发布于 2017-07-17 03:03:36
为什么不支持自定义字体?有什么解决办法吗?
根据Azure 正式文件,我们可以知道目前在Azure WebApp上不支持NReco (使用wkhtmltopdf)。下面是文档的片段。
从HTML生成 有多个库用于将HTML转换为PDF。许多Windows/.NET特定版本都利用IE,因此广泛使用User32 32/GDI32 32。这些API在沙箱中大部分被阻塞(不管计划如何),因此这些框架在沙箱中不起作用。 有些框架没有广泛地利用User32 32/GDI32 32(例如,wkhtmltopdf),我们正在以启用SQL的方式在Basic+中启用这些框架。 不支持的框架 下面列出了由于上述一个或多个限制而无法使用的框架和场景。可以想象,随着沙箱的发展,将来会有一些人得到支持。 PDF生成器由于上述限制而失败:
如果Nreco不是唯一的选择。请尝试使用以下方法:
支持以下PDF生成器:
发布于 2019-05-07 08:33:10
要克服蔚蓝的web应用程序沙箱限制(自定义字体呈现),您可以在app中使用Windows应用自定义字体:https://learn.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-windows-containers-custom-fonts
https://stackoverflow.com/questions/45118548
复制相似问题