2015-02-24 107 views
0

我正在使用iTextSharp将报告导出为PDF,并且我有一张包含我需要的所有内容的表格。GetWidthPoint不返回预期值

我想给列宽度基于每一列的最宽的文本,但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) 

任何想法?

回答

3

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

+0

那么......我必须对此做些什么?我需要做什么? – 2015-02-24 13:51:33

+0

您也正在设置列的相对宽度而不是绝对宽度,请改为调用'PdfPTable.SetTotalWidth()'。 – 2015-02-24 14:07:55

+0

我已经通过SetTotalWidth表达式改变了Pdftable.SetWidths ...在参数中传递ColSize数组。但是列宽是错误的。 – 2015-02-24 14:21:35