Html iText:如何在生成的PDF中包含字体图标

Html iText:如何在生成的PDF中包含字体图标,html,pdf,itext,font-awesome,Html,Pdf,Itext,Font Awesome,我使用的是iText的2.1.7版,我想生成HTML的PDF版本 我的HTML文件包含字体图标: <i class="fa fa-check" style="color:green" aria-hidden="true"></i> 有人有主意吗?字体javascript和css将可怕的图标注入到伪before区域。如果你在做纯html,唯一可以处理的方法就是使用字体真棒备忘单,获取字符代码,使用该字体系列的跨距。您需要下载TTF字体并在iText中注册 虽然这不是iTe

我使用的是iText的2.1.7版,我想生成HTML的PDF版本

我的HTML文件包含字体图标:

<i class="fa fa-check" style="color:green" aria-hidden="true"></i>

有人有主意吗?

字体javascript和css将可怕的图标注入到伪before区域。如果你在做纯html,唯一可以处理的方法就是使用字体真棒备忘单,获取字符代码,使用该字体系列的跨距。您需要下载TTF字体并在iText中注册

虽然这不是iText并使用其他PDF格式,但您可以在此处查看伪元素:

这里是Fontawesome和Gylphicons:

你可以下载Javascript来看看会发生什么,但是上面我提到的部分已经被删除了,因为你现在可以从浏览器的DOM中获取伪元素了。以前,代码会按照我说的那样做,只需在内容中使用正确的字体系列插入一个


您需要放弃fontawesome的使用,只使用HTML中的实际字符,因为任何处理HTML+CSS的操作都不会处理注入图标的Javascript,就像用实际图表替换一样,除非您使用的解决方案会在打印前执行Javascript。

字体Javascript和css会将可怕的图标注入到pseudo before区域。如果你在做纯html,唯一可以处理的方法就是使用字体真棒备忘单,获取字符代码,使用该字体系列的跨距。您需要下载TTF字体并在iText中注册

虽然这不是iText并使用其他PDF格式,但您可以在此处查看伪元素:

这里是Fontawesome和Gylphicons:

你可以下载Javascript来看看会发生什么,但是上面我提到的部分已经被删除了,因为你现在可以从浏览器的DOM中获取伪元素了。以前,代码会按照我说的那样做,只需在内容中使用正确的字体系列插入一个

您需要放弃使用fontawesome,只使用HTML中的实际字符,因为处理HTML+CSS的任何内容都不会处理注入图标的Javascript,就像它将替换为实际图表一样,除非您使用在打印前执行Javascript的解决方案

 // pdf conversion
 ConverterProperties props = new ConverterProperties();
 FontProvider dfp = new DefaultFontProvider(true, true, false);

 /* Temporary fix for display issue with blocks (in current html2pdf version (2.0.1) */
 props.setTagWorkerFactory(new LabelBlockTagWorkerFactory());
 props.setCssApplierFactory(new LabelBlockCssApplierFactory());
 props.setFontProvider(dfp);

 HtmlConverter.convertToDocument(html, pdfDoc, props);
 footerHandler.writeTotal(pdfDoc);
 pdfDoc.close();