2015-06-22 40 views
1

我有一個函數,我一直在使用一個很好的時間在java中,它從給定的字符串值數組計算單元格寬度。iText單元格寬度似乎表現不一致

它工作得很好,我最近在c#中編寫了一個函數版本,並沒有給出預期的結果(即文本被包裝成多行) - 下面顯示的java和c#代碼都非常讚賞

這是Java版本;

​​

這是C#版本;

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; 
    } 
+0

不用擔心 - 由於某種原因,如果你設置table.LockWidth = true,它會導致我所看到的行爲 - 所有這一切都應該是現在。 – pkfox

回答

0

我從您的評論,這個問題已經解決了看,但你不知道爲什麼,所以這裏的約LockWidth一個小的解釋。

有兩種方法可以定義表格的寬度。表中的任何一個都會佔用可用寬度的百分比。這是一個相對於的寬度,取決於頁面大小和頁邊距。歷史上,這個百分比是80%,表格居中。您可以使用setWidthPercentage()方法更改此寬度百分比。如果您使用方法來設置不同列的寬度,那麼這些寬度將被視爲相對寬度,例如{10,10,20}表示您有一個包含3列的表格,其中前兩列佔四分之一可用寬度和第三列佔用一半。

您還可以設置絕對表的寬度。您可以使用setTotalWidth()方法設置總寬度。您還可以定義列的絕對寬度。但是,只要不鎖定寬度,就會忽略這些絕對寬度,以支持默認寬度百分比。如果您使用setLockedWidth(true)(Java)或table.LockedWidth = true(C#),會發生這種情況。

根據您的評論,我認爲這個問題是由於鎖定列的寬度造成的,因此使用絕對值而不是相對值。