Java 如何使用Docx4J为pdf输出设置字体

Java 如何使用Docx4J为pdf输出设置字体,java,docx4j,Java,Docx4j,我正在使用Docx4J.toPDF(wordMLPackage,new FOS(“path/to/file.pdf”))将.docx“文件转换为.pdf”。虽然转换进行得很顺利,但原始文档使用Calibri字体,生成的pdf使用Arial字体。在进行此转换时,是否有方法设置字体 如果您能提供一些链接,说明如何设置字体属性,例如字体大小、字体系列等,如果有相关的工具,那就更好了 我在网上搜索了一下,但找不到任何帮助。等待你的回应。谢谢 我认为您必须将Calibiri字体(文件)添加到PDF中。我在

我正在使用
Docx4J.toPDF(wordMLPackage,new FOS(“path/to/file.pdf”))
.docx“
文件转换为
.pdf”
。虽然转换进行得很顺利,但原始文档使用Calibri字体,生成的pdf使用Arial字体。在进行此转换时,是否有方法设置字体

如果您能提供一些链接,说明如何设置字体属性,例如字体大小、字体系列等,如果有相关的工具,那就更好了


我在网上搜索了一下,但找不到任何帮助。等待你的回应。谢谢

我认为您必须将Calibiri字体(文件)添加到PDF中。我在生成的PDF中也使用Calibri,这就是我必须做的。我用的是PDFe

我不知道如何在
docx4j
中实现这一点,但如果是iText(我正在使用),我必须像这样注册字体

    FontFactory.registerDirectory("./resources/fonts/", true);
    com.itextpdf.text.Font iFont = FontFactory.getFont(font, getEncodingForFont(font), true);
在此之后,iFont被自动嵌入到PDF中,以便在未安装Calibri的系统上正确显示

这可能与您的问题有关


而且似乎已经有什么东西进入了我们的视线:

+1感谢您的快速响应。我不确定docx4j中的情况是否与iText中的情况类似,但u提供的链接似乎有一些信息。在上面@AdityaBahuguna还检查了到的第二个链接,因此我添加了。在转换过程中,有一种简单的方法可以将propert字体应用到PDF中。我将标记您的答案,因为您提供的信息是正确的。引用Docx4J文档“当使用Docx4J创建PDF时,它只能使用可用的字体。这些字体来自两个来源:1)安装在计算机上的字体2)嵌入文档中的字体”-因此,为了便于移植,我想我会嵌入它。Rest应该可以自动工作,因为我使用的方法是Facade-to-pdf转换,并且必须有回退选项。@AdityaBahuguna是的,embending是一种方法,因为如果您试图在未安装
Calibri
的系统上打开文档,pdf中的文本将回退到默认字体。由于这一事实,同一个PDF在两台不同的机器上看起来可能会有所不同——因此,篡改使得它成为真正的“可移植文档格式”:)我很高兴我能提供帮助。