【问题标题】:GetWidthPoint not returning expected valueGetWidthPoint 未返回预期值
【发布时间】:2015-02-24 12:53:50
【问题描述】:

我正在使用 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)

有什么想法吗?

【问题讨论】:

    标签: vb.net itextsharp


    【解决方案1】:

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

    【讨论】:

    • 那么……我该怎么办?我需要做什么?
    • 您还设置了列的相对宽度而不是绝对宽度,请改为调用PdfPTable.SetTotalWidth()
    • 我已经通过 SetTotalWidth 表达式更改了 Pdftable.SetWidths...在参数中传递 ColSize 数组。但是列宽还错了。
    猜你喜欢
    • 2013-09-04
    • 2016-02-13
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2012-11-08
    • 2020-07-06
    相关资源
    最近更新 更多