Canvas 内文本中的 iText 垂直对齐不起作用

iText Vertical Alignment in Text inside a Canvas isn't working

我正在尝试将 canvas 内的文本设置为与 VerticalAlignment.BOTTOM 属性 值垂直对齐,但无论我放置什么都不会改变视觉结果.

retangulo = New iText.Kernel.Geom.Rectangle(122, AlturaPag - 208, 235, 27)
PdfCanvas = New iText.Kernel.Pdf.Canvas.PdfCanvas(page).SetLineWidth(1).Rectangle(retangulo).Stroke()
canvas = New iText.Layout.Canvas(PdfCanvas, retangulo)
texto = (New iText.Layout.Element.Text(Npagador).SetFontSize(11).SetBold)

' VerticalAlingment = BOTTOM \/     
paragrafo = (New iText.Layout.Element.Paragraph().Add(texto).SetTextAlignment(TextAlignment.LEFT).SetVerticalAlignment(VerticalAlignment.BOTTOM))
canvas.Add(paragrafo)

您正在尝试将段落的内容与段落本身的底部对齐,而段落本身在布局时仅使用了最小的必要高度,因此无论您设置何种对齐方式(底部或顶部),结果它只是因为段落将自己打包到最小高度。

要确保 setVerticalAlignment 有效果,您需要通过设置段落的高度使段落更垂直 space。这是一个示例,其中我设置段落高度以匹配您添加它的 canvas 的高度,因为它是 canvas 中的唯一元素。我还将段落的边距设置为零,这样文本周围就不会出现额外的间距。

代码在 Java 中,但您可以将其转换回 VB.NET 就像我将您的代码转换为 Java:

一样容易
Paragraph p = new Paragraph().add("Test").setTextAlignment(TextAlignment.LEFT)
        .setVerticalAlignment(VerticalAlignment.BOTTOM).setHeight(retangulo.getHeight());
p.setMargin(0);