gpt4 book ai didi

JAVA - docx中的字体路径而不是字体名称

转载 作者:行者123 更新时间:2023-12-02 10:39:55 25 4
gpt4 key购买 nike

我正在使用 Apache POI 生成 .docx 文档。我将外部字体添加到我的项目中。例如:

String playfairDisplayRegular = this.getClass().getClassLoader().getResource("PlayfairDisplay-Regular.ttf").getFile();

我在段落中使用了 playfairDisplayRegular。当我在字段中标记文档中的文本时,字体名称为路径,例如:

/C:/Users/..../Documents...

而不是字体名称(字体正在运行)。有任何想法吗 ?

你好,阿图尔

最佳答案

URL.getFile() 仅返回 URL 的文件名部分(+ 可选查询部分 ?...)。

对于资源(可能位于 jar 内的文件,驻留在类路径上),不应使用 File,而应尽可能使用 InputStream。

使用 java.awt.Font:

Font font = Font.createFont(Font.TRUETYPE_FONT,
getClass().getResourceAsStream("/PlayfairDisplay-Regular.ttf"));

在 docx 中,您现在可以使用 font.getFamily() (对于 XSLFTextRun.setFontFamily)等。

在 docx 中嵌入字体:

同时 apache poi 可能能够嵌入字体(为您提供许可证问题!),但自己做应该很简单:.docx 是 zip 格式,字体位于 /fonts/ 子目录中。您可以在用 MSWord 编写的小 docx 中对其进行测试。写入文件可以通过 zip 文件系统来完成:"jar:file:/C:/... .docx"Files.copy

关于JAVA - docx中的字体路径而不是字体名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52988724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com