问题描述
我正在尝试将画布内的文本设置为与 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
有效果,您需要通过设置段落的高度来给段落更多的垂直空间。这是一个示例,我设置段落高度以匹配您添加它的画布的高度,因为它是画布中的唯一元素。我还将段落的边距设置为零,这样您就不会在文本周围获得额外的间距。
代码是用 Java 编写的,但您可以像我将代码转换为 Java 一样轻松地将其转换回 VB.NET:
Paragraph p = new Paragraph().add("Test").setTextAlignment(TextAlignment.LEFT)
.setVerticalAlignment(VerticalAlignment.BOTTOM).setHeight(retangulo.getHeight());
p.setMargin(0);