我有一个函数,我在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}}
答案 0 :(得分:0)
我从您的评论中看到问题已经解决,但您不知道原因,所以这里有一个关于LockWidth
的小解释。
有两种方法可以定义表格的宽度。表格占可用宽度的百分比。这是相对宽度,取决于页面大小和页边距。从历史上看,这个百分比是80%,表格居中。您可以使用setWidthPercentage()
方法更改此宽度百分比。如果您使用方法来设置invidual列的宽度,那么这些宽度将被视为相对宽度,例如{10,10,20}意味着您有一个包含3列的表,其中前两列占四分之一可用宽度和第三列占一半。
您还可以设置表格的绝对宽度。您可以使用setTotalWidth()
方法设置总宽度。您还可以定义列的绝对宽度。但是,只要您不锁定&#34;锁定&#34;宽度。如果您使用setLockedWidth(true)
(Java)或table.LockedWidth = true
(C#),会发生这种情况。
根据您的评论,我认为问题是由锁定列的宽度引起的,因此使用绝对值而不是相对值。