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

问题描述 投票:0回答:2

只有当我在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);

但没有成功...

java spring-boot flying-saucer
2个回答
3
投票

调试飞碟一段时间后,似乎:

_sharedContext.setBaseURL(url);

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

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

0
投票

也可以:

ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont("templates/yourfont.ttf", true);

我不知道是不是只有我这样,但我没有使用基本路径,它仍然有效。我正在使用 Spring Boot(为了类加载)。

© www.soinside.com 2019 - 2024. All rights reserved.