我用Java生成带有iText的PDF文件。 我的表格列具有固定的宽度和文本,这对于包含在单元格中的一行来说太长了。 但是没有使用连字符。 “Leistungsscheinziffer”一词显示为: Leistungssc //在这里休息 heinziffer
我使用连字符的代码:
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-zif-fer “
Hyphenator h = new Hyphenator("de", "DE", 2, 2);
Hyphenation s = h.hyphenate("Leistungsscheinziffer");
System.out.println(s);
有没有什么我忘记在连字符在那里工作的桌子? 谢谢你的帮助。如果您需要有关我的代码的更多信息,我会告诉您。
答案 0 :(得分:5)
首先是与问题无关的注释:您创建了一个PdfPCell
对象,但是您没有使用它。您可以将短语添加到表中,而不是使用cell
对象。
现在提出您的问题:通常在Chunk
级别设置连字符:
Chunk chunk = new Chunk("Leistungsscheinziffer");
chunk.setHyphenation(new HyphenationAuto("de", "DE", 2,2));
table.addCell(new Phrase(chunk));
如果要在Phrase
级别设置连字,可以这样做,但这只适用于所有后续添加的Chunk
。它不适用于已存储在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。