javascript - xhtmlrenderer xhtml 到 pdf 字体问题,甚至不能使用字体系列 : Verdana;

标签 javascript java css spring-mvc flying-saucer

我正在使用 flyingSaucer 从 HTML 和 CSS 生成 PDF。

其余代码工作得很好,除了字体的东西。以下是我正在使用的代码。

public void convertHtmlToPdf(String html, String css, OutputStream out) {
    try {
        html = correctHtml(html);
        html = getFormedHTMLWithCSS(html, css);

        HtmlCleaner cleaner = new HtmlCleaner();
        TagNode rootTagNode = cleaner.clean(html);
        CleanerProperties cleanerProperties = cleaner.getProperties();
        XmlSerializer xmlSerializer = new PrettyXmlSerializer(cleanerProperties);
        String cleanedHtml = xmlSerializer.getAsString(rootTagNode);


        File fontFile = new File("/omegaengineeringservices/Verdana.ttf");
        FontFactory.register(fontFile.getAbsolutePath());

        ITextRenderer r = new ITextRenderer();
        FontResolver resolver = r.getFontResolver();

        r.getFontResolver().addFont(fontFile.getAbsolutePath(), BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
        r.setDocumentFromString(cleanedHtml);

        r.layout();
        r.createPDF(out);
        r.finishPDF();

    } catch (Exception e) {
        e.printStackTrace();
        logger.error(e.getMessage(), e);
    }
}

我也在我的 CSS 中添加了相同的字体。

.manual-body-center{
        width:100%;
        font-family: Verdana;
    }

因此,我得到一个错误,

ExceptionConverter: java.io.IOException: /omegaengineeringservices/Verdana.ttf not found as file or resource.
    at com.lowagie.text.pdf.RandomAccessFileOrArray.<init>(Unknown Source)
    at com.lowagie.text.pdf.TrueTypeFont.process(Unknown Source)
    at com.lowagie.text.pdf.TrueTypeFont.<init>(Unknown Source)
    at com.lowagie.text.pdf.BaseFont.getAllFontNames(Unknown Source)
    at com.lowagie.text.FontFactoryImp.register(Unknown Source)
    at com.lowagie.text.FontFactory.register(Unknown Source)
    at com.lowagie.text.FontFactory.register(Unknown Source)
    at com.omegaengineering.services.pdf.impl.Converter.convertHtmlToPdf(Converter.java:40)
    at com.omegaengineeringmanualsaddon.controllers.ManualsControllers.convertFromHtml(ManualsControllers.java:148)
    at com.omegaengineeringmanualsaddon.controllers.ManualsControllers.convertHtmlToPdf(ManualsControllers.java:131)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)

最佳答案

给定文件路径有问题/omegaengineeringservices/Verdana.ttf

您需要在那里提供有效的路径,有关详细信息,请参阅flyingsaucer 用户指南。在如何添加自定义或特定字体?部分,有详细的示例。

http://flyingsaucerproject.github.io/flyingsaucer/r8/guide/users-guide-R8.html#xil_32

关于javascript - xhtmlrenderer xhtml 到 pdf 字体问题,甚至不能使用字体系列 : Verdana;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53723388/

相关文章:

java - 如何在java 8中从纪元获取分钟的秒数

javascript - 从 iframe 获取 ElementById

javascript - Django JavaScript 翻译 gettext 未定义

java - GWT编辑器框架,如何实现编辑器的有效复用

java - 如何初始化 NamedParameterJdbcTemplate 变量

html - 更改 <td> title 属性的字体大小?

html - 十六进制颜色在 Mac 上的 Chrome 和 Safari 之间显示不同

html - float div 中的列表

javascript - 如何在 JavaScript 中创建 JSON 字符串?

javascript - Vuejs/Webpack 从包中排除 json 文件