检查文本是否覆盖单元格
Check if text covers cell
我需要知道如何检查单元格内的文本是否覆盖了它。如果没有,我想用点覆盖 space 的其余部分。
例如,假设我有这个:
Paragraph p = new Paragraph("Total:").SetFont(FontRegular).SetFontSize(FontSize);
Cell cell = new Cell();
cell.Add(p);
我说单元格占据整个 table,或一半,或其他。获取单元格的宽度很容易。我只是通过table获取当前列的宽度(我不明白为什么单元格或段落方法的GetWidth returns null ...)。
但是如何才能得到段落占用的宽度呢?我需要知道根据需要添加尽可能多的点,以便进行格式化。
因为这会通过一些字符串来实现,所以我真的负担不起每次都手动设置它。我必须让它自动。
如果获取单元格宽度很容易,您可以使用制表位用点填充该行的其余部分。下面是辅助方法的示例:
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);
结果类似于以下内容:
当然,您可以决定是否用点填充空白单元格,也许将制表位位置向左移动一点等,但这应该让您了解实现目标的方法。
我需要知道如何检查单元格内的文本是否覆盖了它。如果没有,我想用点覆盖 space 的其余部分。
例如,假设我有这个:
Paragraph p = new Paragraph("Total:").SetFont(FontRegular).SetFontSize(FontSize);
Cell cell = new Cell();
cell.Add(p);
我说单元格占据整个 table,或一半,或其他。获取单元格的宽度很容易。我只是通过table获取当前列的宽度(我不明白为什么单元格或段落方法的GetWidth returns null ...)。 但是如何才能得到段落占用的宽度呢?我需要知道根据需要添加尽可能多的点,以便进行格式化。
因为这会通过一些字符串来实现,所以我真的负担不起每次都手动设置它。我必须让它自动。
如果获取单元格宽度很容易,您可以使用制表位用点填充该行的其余部分。下面是辅助方法的示例:
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);
结果类似于以下内容:
当然,您可以决定是否用点填充空白单元格,也许将制表位位置向左移动一点等,但这应该让您了解实现目标的方法。