我需要知道如何检查单元格中的文本是否覆盖了它。如果没有,我想用点覆盖其余空间。
例如,说我有这个:
Paragraph p = new Paragraph("Total:").SetFont(FontRegular).SetFontSize(FontSize);
Cell cell = new Cell();
cell.Add(p);
我说单元格占据整个桌子,或者一半,或者其他。获取单元的宽度很容易。我只是通过表格获取当前列的宽度(我不明白为什么单元格或段落方法的GetWidth返回null ...)。 但是,如何获取该段落占用的宽度?我需要知道要添加任意数量的点以用于格式化。
因为这将通过一些字符串来完成,所以我真的负担不起每次都要手动设置它。我必须要自动。
答案 0 :(得分:1)
如果轻松获得单元格宽度,则可以使用制表位来用点填充行的其余部分。这是一个辅助方法的示例:
private Cell createCell(String content, float cellWidth) {
Cell cell = new Cell();
if (content != null) {
Paragraph p = new Paragraph(content);
p.addTabStops(new TabStop(cellWidth, TabAlignment.RIGHT, new DottedLine()));
p.add(new Tab());
cell.add(p);
}
return cell;
}
它将添加制表位和必要的制表符,以用点填充最后一行的其余部分。
因此,如果我使用这种方法,例如通过以下方式:
Table table = new Table(new float[]{150, 50})
.addCell(createCell("cell 1, 1", 150))
.addCell(createCell("cell 1, 2", 50))
.addCell(createCell("cell 2, 1", 150))
.addCell(createCell("cell 2, 2", 50))
.addCell(createCell("cell 3, 1", 150))
.addCell(createCell(null, 50));
doc.add(table);
结果将类似于以下内容:
当然,您可以决定是否用点填充空白单元格,或者将制表位停止位置稍微向左移动,等等,但这应该为您提供一种实现目标的方法。