Table 单元格中的 Itext 断字

Itext hyphenation in Table cells

我正在使用 iText 创建 table。
但是输出看起来真的很糟糕,因为断字,似乎没有正确完成。
我已经读过这个问题 How to hyphenate text?
这个例子 http://itextpdf.com/sandbox/tables/HyphenationExample
在将 itext_hyph_xml.jar 添加到我的 class 路径后,我在 eclipse 中尝试了该示例。当我 运行 代码时不会抛出错误,但是行

Hyphenator h = new Hyphenator("de", "DE", 2, 2);
Hyphenation s = h.hyphenate("Leistungsscheinziffer");
System.out.println(s);

将 null 打印到控制台而不是 "Lei-stungs-schein-zif-fer" 或与我预期的类似的东西。
我尝试使用

中的参数
chunk.setHyphenation(new HyphenationAuto("de", "DE", 2,2));

但文档中的输出从未有过细微差别。

顺便说一下,我尝试使用的代码看起来有点像这样:

for(String s: interest){
        Chunk chunk = new Chunk(s,FONT[0]);
        chunk.setHyphenation(new HyphenationAuto("de", "DE", 2,3));
        table.addCell(new Phrase(chunk));

}

好的,我现在自己想通了。
因为我无法在互联网上找到答案,所以我想我会在这里分享它,这样将来可能遇到同样错误的任何人都不需要一周的时间来弄清楚。

似乎在 class Hyphenator 中 defaultHyphLocation 设置如下:

private static final String defaultHyphLocation = "com/itextpdf/text/pdf/hyphenation/hyph/";

但是itext_hyph.jar的结构是这样的:
com.lowagie.text.pdf.hyphenation.hyph
显然,从 jar 中加载 hyph 文件肯定会失败,因为无法找到 Hyphenator 使用的路径。我实际上认为这会导致错误,但似乎只是在加载 hyph 文件失败时返回 null
然而,调用 Hyphenator.setHyphenDir("com/lowagie/text/pdf/hyphenation/hyph/");
不会像人们想象的那样改变任何事情,因为它改变了错误的字符串变量。
我唯一能想到的解决这个问题的方法是根据 Hyphenator 中给定的路径重新创建 itext_hyph.jar 并最终修复它。断字功能现在可以使用了。