微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决画布内文本中的 iText 垂直对齐不起作用

我正在尝试将画布内的文本设置为与 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)

enter image description here

解决方法

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

为了确保 setVerticalAlignment 有效果,您需要通过设置段落的高度来给段落更多的垂直空间。这是一个示例,我设置段落高度以匹配您添加它的画布的高度,因为它是画布中的唯一元素。我还将段落的边距设置为零,这样您就不会在文本周围获得额外的间距。

代码是用 Java 编写的,但您可以像我将代码转换为 Java 一样轻松地将其转换回 VB.NET:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。