表格标题中的垂直文字?

时间:2018-06-13 15:13:55

标签: text-alignment itext7

如何使单个标题文本(表格标题)垂直流动而不是水平流动?

我尝试添加

setVerticalAlignment(VerticalAlignment.TOP)

我认为没有任何区别。

targetTable.addHeaderCell(new Paragraph("VerticalAlignment").setFont(myFont).setFontColor(ColorConstants.BLACK)).setVerticalAlignment(VerticalAlignment.TOP));

see second and third column header text alignment

1 个答案:

答案 0 :(得分:1)

正如评论中已经提到的,这不是垂直对齐的问题(好吧,主要不是,我们将使用垂直对齐来垂直调整外部标题单元格中的文本)但是而不是旋转文本

您可以像这样在图像中创建一个表格:

ISplitCharacters noSplit = (text, glyphPos) -> false;

Table table = new Table(4);

table.addHeaderCell(new Cell().add(new Paragraph("First Col Header"))
                              .setVerticalAlignment(VerticalAlignment.BOTTOM));
table.addHeaderCell(new Paragraph("Second Column Header")
                              .setRotationAngle(Math.PI / 2).setSplitCharacters(noSplit));
table.addHeaderCell(new Cell().add(new Paragraph("Third Column Header").setRotationAngle(Math.PI / 2)
                              .setSplitCharacters(noSplit)).setVerticalAlignment(VerticalAlignment.BOTTOM));
table.addHeaderCell(new Cell().add(new Paragraph("Fourth Column Header"))
                              .setVerticalAlignment(VerticalAlignment.BOTTOM));

table.addCell("Row 1 Description");
table.addCell("12");
table.addCell("15");
table.addCell("27");

table.addCell("Row 2 Description");
table.addCell("25");
table.addCell("12");
table.addCell("37");

table.addCell("Sum");
table.addCell("37");
table.addCell("27");
table.addCell("64");

doc.add(table);

CreateTableWithRotatedHeader test testCreateTableForUser648026

要获取旋转的文字,我们会将setRotationAngle(Math.PI / 2)应用于相关段落。

为防止旋转的文字被分割为多行,我们不鼓励分割应用setSplitCharacters(noSplit)

要使列文本位于标题单元格的底部,而不是(默认)顶部,我们将setVerticalAlignment(VerticalAlignment.BOTTOM)应用于单元格。

结果:

Screen shot