我使用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)
有什么想法吗?
答案 0 :(得分:3)
不要忘记单元格边距,默认情况下为2,总共为4。你没有发布你创建单元格的方式,但我猜它会引入更多的利润。