java - 将 .ttf 字体包含到使用 Flying Saucer 和 Spring-Boot 生成的 pdf 中

标签 java spring-boot flying-saucer

只有当我在index.html中提供绝对路径时,我才能生成包含.ttf字体的pdf,如下所示:

        @font-face {
        font-family: Asap-Regular;
        src: url("/home/user/Desktop/Asap-Regular.ttf");
        -fs-pdf-font-embed: embed;
        -fs-pdf-font-encoding: Identity-H;
        }

我想要实现的是将 .ttf 字体集成为相对路径。我也尝试过从 java 代码进行集成,如下所示:

renderer.getFontResolver().addFont(("path/Asap-Bold.ttf"),
                                       "Asap-Bold", "Identity-H", true, null);

但没有成功...

最佳答案

调试 Flying Saucer 一段时间后,似乎:

_sharedContext.setBaseURL(url);

需要指向 .ttf 文件路径(在我的例子中是资源目录)。为了从sharedContext设置url,你需要调用:

renderer.setDocumentFromString(html, String.valueOf(resourceLoader.getResource("classpath:fonts/").getURI()));

关于java - 将 .ttf 字体包含到使用 Flying Saucer 和 Spring-Boot 生成的 pdf 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49612708/

相关文章:

java - 使用 JAXB 指定根节点和子节点

java - 为什么我的 shell 脚本的输出没有打印在控制台中?

java - 如何使用 xhtmlrenderer 在 PDF 中渲染亚洲字符

java - CSS 页面计数器 - 一个部分占用的总页数

java - XSD/Maven : Duplicate entry

java - spring boot XSRF-TOKEN如何添加ssl(https),配置

java - 从持续时间计算 LocalDateTime

hibernate - 如何将持久性单元的 JPA EntityManagerFactory 设置为不为 'default'

java - Spring 启动: Rest endpoint integration with Kafka

html - PDF 内容重叠