Vb.net 使用Go(True)测试后,如何重新定位iTextSharp ColumnText?

Vb.net 使用Go(True)测试后,如何重新定位iTextSharp ColumnText?,vb.net,pdf-generation,itextsharp,Vb.net,Pdf Generation,Itextsharp,我正在为ColumnText编写一个小包装器,它处理垂直对齐,即在边界框内顶部/中间/底部对齐 当我调用SetSimpleColumn时,它需要边界框的位置。调用Go(True)(True=测试模式)可以测试文本的高度。从那里,我想重新分配Y坐标,这样当我调用Go()时,文本将显示在所需的新位置。如果可能,是如何做到的 教育署:例如: Imports iTextSharp.text ... columnText = New pdf.ColumnText(pageContentByte) col

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

当我调用
SetSimpleColumn
时,它需要边界框的位置。调用
Go(True)
(True=测试模式)可以测试文本的高度。从那里,我想重新分配Y坐标,这样当我调用
Go()
时,文本将显示在所需的新位置。如果可能,是如何做到的

教育署:例如:

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.'

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

设置SimpleColumn()集的变量受到保护,因此您无法直接访问它们。但是,您应该能够对更新的参数重复使用
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.

谢谢,我最终还是这么做了,但我想知道是否有一种“更整洁”的方式不需要重复主代码。尝试了一个自定义的“MyColumnText”类,覆盖了Go(),但无论我调整了哪个受保护的成员,它似乎都不会影响任何东西。