作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我用 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-zif-fer"
Hyphenator h = new Hyphenator("de", "DE", 2, 2);
Hyphenation s = h.hyphenate("Leistungsscheinziffer");
System.out.println(s);
有什么我忘记设置连字符在那里工作的表吗?谢谢你的帮助。如果您需要有关我的代码的更多信息,我会告诉您。
最佳答案
首先是与问题无关的评论:您创建了一个 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 .
关于java - 如何对文本进行断字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20119709/
安装并修复我的 VS2015 实例后,我仍然无法让智能感知(服务器端)在我的 MVC View 中工作。当我在 session 中第一次打开 .cshtml 文件并找到 Activitylog 文件时
我是一名优秀的程序员,十分优秀!