GetWidthPoint未返回预期值

时间:2015-02-24 12:53:51

标签: vb.net itextsharp

我使用iTextSharp将报告导出为PDF,我有一张包含我需要的所有内容的表格。

我想根据每列的最宽文本给出列宽,但GetWidtPoint()方法返回我不期望的文本宽度,列内容跳转到下一行。

下面是一个关于标题文字宽度的微积分的例子。我把所有的表头首先放在一个数组中。

Dim ColSize(10) as single 
Dim Ck as Chunk

For I = 0 to Colsize.getUpperBound(0)
        Ck = new Chunk(Data(I),myFont)
        Ck.SetCharacterSpacing(1)
        Colsize(I) = Ck.GetWidthPoint
Next I

最后,表格声明......

Dim T as new PdfPtable(11)
T.HorizontalAligment = 0
T.WidthPercentage = 100
T.SpacingBefore = 3
T.setWidths(Colsize)

关于问题的一个例子:

通过我使用的微积分方法,GetWidthPoint()返回33点到" Produto"单词,但如果我将列宽设置为33f所以我不能只在第一行显示此文本。要在同一行显示整个单词,我需要将列宽设置为55f。

当我在单元格中打印文本时......

Dim Cell as new PdfpCell(new Phrase(new Chunk(Data(I,X),Font)))
T.addCell(cell)

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

不要忘记单元格边距,默认情况下为2,总共为4。你没有发布你创建单元格的方式,但我猜它会引入更多的利润。