2015-02-24 173 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