如何在使用Go(True)测试后重新定位iTextSharp ColumnText?

时间:2013-10-13 16:42:20

标签: vb.net pdf-generation itextsharp

我正在为ColumnText编写一个小包装器来处理垂直对齐 - 即。在边界框内顶部/中间/底部对齐。

当我呼叫SetSimpleColumn时,它需要边界框的位置。调用Go(True)(true =测试模式)可以让我测试文本的高度。从那里,我想重新分配Y坐标,因此当我调用Go()时,文本显示在所需的新位置。如果可能的话,它是如何完成的?

Ed:例子:

Imports iTextSharp.text
...

columnText = New pdf.ColumnText(pageContentByte)
columnText.SetSimpleColumn(New Phrase("some text"), x1, y1, x2, y2, leading)
columnText.Go(True) ' Test mode.'
y1 = y2 + (y1 - columnText.yLine) ' Bottom-align it.'
''
' HOWTO: Re-position Y-coordinate (y1) of columnText object?'
''
columnText.Go()     ' Render at adjusted Y position.'

(将单引号添加到注释的末尾以使语法突出显示正常工作)

1 个答案:

答案 0 :(得分:1)

SetSimpleColumn()设置的变量受到保护,因此您无法直接访问它们。但是,您应该能够使用更新后的参数重复使用SetSimpleColumn()方法。

columnText.SetSimpleColumn(New Phrase("some text"), x1, y1, x2, y2, leading)
columnText.Go(True) ''//Test mode.

y1 = y2 + (y1 - columnText.yLine) ''// Bottom-align it.

columnText.SetSimpleColumn(New Phrase("some text"), x1, y1, x2, y2, leading)
columnText.Go(False) ''// Render at adjusted Y position.