如何用openpdf显示U+0104 ?



我正在尝试使用openPDF创建pdf。如果我尝试打印某些字符,如Ą (U+0104),它们不会显示在生成的pdf上。

我使用.ttf文件将Chunk字体设置为Times New Roman。这个文件取自我的系统(我知道以后可能需要解决许可问题),而且我知道它有一个字符Ą。

FontFactory.register("font/system-times-new-roman.ttf", "custom");
Font font = FontFactory.getFont("custom");
Chunk chunk = new Chunk("Value to Print", font);

我可以告诉这是成功地将字体设置为Times New Roman,但不知道为什么它不显示一些字符。如果我使用:

设置它也会得到相同的结果Font font = FontFactory.getFont("Times-Roman")

如果我设置字体为:Font font = FontFactory.getFont("defaultEmbedded")然后显示字符,但不是衬线字体。有人以前遇到过这个吗?我可以尝试使用另一个pdf生成器工具,但需要大量的返工。

正如K J发送的链接中提到的,问题是没有显示多字节字符。为了启用它们,我添加了Apache依赖项:

<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>fop</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>xmlgraphics-commons</artifactId>
<version>2.3</version>
</dependency>

然后我更新getFont调用如下:

FontFactory.getFont("custom", "Identity-H", false, 10, 0, null)));

现在多字节字符在Times New Roman中可以正确显示。

最新更新