如何对文本进行连字符?

Posted

技术标签:

【中文标题】如何对文本进行连字符?【英文标题】:How to hyphenate text? 【发布时间】:2013-12-05 20:22:04 【问题描述】:

我使用 Java 中的 iText 生成 PDF 文件。 我的表格列有固定的宽度和文本,这对于单元格中的一行来说太长了。 但不使用连字符。 “Leistungsscheinziffer”一词显示为: Leistungssc //在这里休息 海因齐弗

我使用连字符的代码:

final PdfPTable table = new PdfPTable(sumCols);
table.getDefaultCell().setBorder(Rectangle.NO_BORDER);
table.getDefaultCell().setPadding(4f);
table.setWidths(widthsCols);
table.setWidthPercentage(100);
table.setSpacingBefore(0);
table.setSpacingAfter(5);

final Phrase result = new Phrase(text, font);
result.setHyphenation(new HyphenationAuto("de", "DE", 2,2));
final PdfPCell cell = new PdfPCell(table.getDefaultCell());
cell.setPhrase(result);
table.addCell(cell);
...

连字符被激活并且以下测试结果“Lei-stungs-schein-ziff-fer "

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

有什么我忘了设置连字符在那里工作的表吗? 谢谢你的帮助。如果您需要有关我的代码的更多信息,我会告诉您。

【问题讨论】:

【参考方案1】:

首先是与问题无关的评论:您创建了一个PdfPCell 对象,但您没有使用它。您将短语添加到表中,而不是使用 cell 对象。

现在回答您的问题:通常在Chunk 级别设置断字:

Chunk chunk = new Chunk("Leistungsscheinziffer");
chunk.setHyphenation(new HyphenationAuto("de", "DE", 2,2));
table.addCell(new Phrase(chunk));

如果您想在Phrase 级别设置断字,您可以这样做,但这仅适用于所有后续添加的Chunks。它不适用于已存储在Phrase 中的内容。换句话说:您需要创建一个空的Phrase 对象,然后添加一个或多个Chunk 对象:

Phrase phrase = new Phrase();
phrase.setHyphenation(new HyphenationAuto("de", "DE", 2,2));
phrase.add(new Chunk("Leistungsscheinziffer"));

我根据你的代码做了一个例子 (HyphenationExample); “Leistungsscheinziffer”一词在生成的 PDF 中连字符:hyphenation_table.pdf。

【讨论】:

这是一个打字错误 ;-) 我使用单元格。非常感谢你的帮助。我认为解决我的问题很容易:-D @Bruno 我正在尝试使用您的示例,但它并没有强调这个词...这是我所拥有的,请花点时间尝试一下(我完全卡在这里)dropbox.com/s/wu259ggbebb739f/itext.7z?dl=0 @vach 您是否将连字符 jar 添加到您的 CLASSPATH 中?你可以找到这个罐子here。

以上是关于如何对文本进行连字符?的主要内容,如果未能解决你的问题,请参考以下文章

linux中如何对一个文本内容进行排序呢

linux中如何对一个文本内容进行排序呢

对文本文件进行排序

17如何对字符串进行左, 右, 居中对齐 18如何去掉字符串中不需要的字符 19如何读写文本文件 20如何处理二进制文件 21如何设置文件的缓冲

如何对文本文件进行排序以在 O(MN) 时间复杂度中查找字谜,其中 M 是最大字符数,N 是单词数?

如何像 EXCEL 一样在 Oracle 中对带有“_”的文本进行排序?