【问题标题】:iText Vertical Alignment in Text inside a Canvas isn't working画布内文本中的 iText 垂直对齐不起作用
【发布时间】:2021-10-05 07:20:04
【问题描述】:

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

【问题讨论】:

    标签: vb.net itext pdf-generation itext7


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-28
      • 2011-11-25
      • 1970-01-01
      • 2014-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多