首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用wkhtmltopdf包装器nreco的自定义字体

使用wkhtmltopdf包装器nreco的自定义字体
EN

Stack Overflow用户
提问于 2017-07-15 13:08:15
回答 3查看 3.2K关注 0票数 6

我正在将一个html文件转换成一个.net包装器"NReco.PdfGenerator“的pdf,用于在一个蔚蓝的web应用程序上使用wkhtmltopdf (运行在标准计划中),但不能在我的文档中包含自定义字体。PDF生成器不会加载自定义字体,也不会忽略它。我尝试过不同的格式来包含字体文件,比如链接到google字体css、从google字体导入、相对本地路径、绝对本地路径、通过本地主机加载字体文件以及使用base64编码的字体:

代码语言:javascript
运行
复制
@@font-face {
            font-family: 'testfont';
            src:  url(data:application/x-font-woff;charset=utf-8;base64,...) format('woff');
            font-weight: normal;
            font-style: normal;
        }

与下列一起使用:

代码语言:javascript
运行
复制
font-family: 'testfont';

@@因为我使用的是剃须刀视图。当将生成的HTML保存到文件中时,它看起来很好,在浏览器(chrome)中打开时工作也很好。

生成PDF:

代码语言:javascript
运行
复制
var htmlToPdf = new NReco.PdfGenerator.HtmlToPdfConverter();
return htmlToPdf.GeneratePdf(html);

我还从字体-家族语句中删除了备份字体。我尝试过与wkhtmltopdf不同的版本,但没有运气。生成器发送来自本地主机的图像。

在我的windows机器上运行相同的asp.net应用程序时,字体工作得很好。

NReco文档说“避免使用自定义字体”(在蔚蓝的web应用环境中),这是否意味着没有机会让它运行?为什么不支持自定义字体?有什么解决办法吗?

谢谢你的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-16 16:30:10

这是已知的问题: Azure应用程序托管环境限制了一些GDI API,因此wkhtmltopdf无法加载(和呈现)自定义字体。默认情况下,只能使用Windows上的标准字体(比如Arial、等)。您可以联系Azure支持这个主题-他们可以提供更多有关Azure应用程序沙箱限制的详细信息。

票数 4
EN

Stack Overflow用户

发布于 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生成器由于上述限制而失败:

  • 同步
  • Siberix
  • NReco (使用wkhtmltopdf)
  • Spire.PDF

如果Nreco不是唯一的选择。请尝试使用以下方法:

支持以下PDF生成器:

  • SQL报告框架:要求站点在基本或更高级别运行(并不是说该网站目前无法运行功能应用程序)。
  • EVOPDF:供应商解决方案见http://www.evopdf.com/azure-html-to-pdf-converter.aspx
  • 远程报告:要求站点在基本或更高版本中运行。
  • Rotativa / wkhtmltopdf:要求站点在Basic或更高版本中运行。
票数 1
EN

Stack Overflow用户

发布于 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45118548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档