iText单元格宽度似乎表现不一致

时间:2015-06-22 11:02:31

标签: java c# itext

我有一个函数,我在java中使用了很长时间,它从给定的字符串值数组计算pdftable的单元格宽度。

它工作得非常好,我最近在c#中编写了一个函数版本并且它没有给出预期的结果(即文本被包装到多行) - 下面显示的java和c#代码都有很多帮助理解

这是Java版本;

float[] CalculateCellWidths(String[] CellHeaders, iTextSharp.text.Font CellFont)
    {
        float[] CellWidths = new float[CellHeaders.Length];

        for (int i = 0; i < CellHeaders.Length; i++)
        {
            CellWidths[i] = CellFont.GetCalculatedBaseFont(true).GetWidthPoint(CellHeaders[i], CellFont.CalculatedSize);

        }
        return CellWidths;
    }

这是C#版本;

{{1}}

1 个答案:

答案 0 :(得分:0)

我从您的评论中看到问题已经解决,但您不知道原因,所以这里有一个关于LockWidth的小解释。

有两种方法可以定义表格的宽度。表格占可用宽度的百分比。这是相对宽度,取决于页面大小和页边距。从历史上看,这个百分比是80%,表格居中。您可以使用setWidthPercentage()方法更改此宽度百分比。如果您使用方法来设置invidual列的宽度,那么这些宽度将被视为相对宽度,例如{10,10,20}意味着您有一个包含3列的表,其中前两列占四分之一可用宽度和第三列占一半。

您还可以设置表格的绝对宽度。您可以使用setTotalWidth()方法设置总宽度。您还可以定义列的绝对宽度。但是,只要您不锁定&#34;锁定&#34;宽度。如果您使用setLockedWidth(true)(Java)或table.LockedWidth = true(C#),会发生这种情况。

根据您的评论,我认为问题是由锁定列的宽度引起的,因此使用绝对值而不是相对值。