table header 中的竖排文本?

Vertical text in table header?

如何使单个 header 文本(table 的 header)垂直排列而不是水平排列?

我试过添加

setVerticalAlignment(VerticalAlignment.TOP)

我认为这没有任何区别。

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

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

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

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 测试 testCreateTableForUser648026)

为了获得旋转的文本,我们将 setRotationAngle(Math.PI / 2) 应用于相关段落。

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

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

结果: