2015-11-16 53 views
0

我使用iTextSharp v5.5.6DefaultCell屬性沒有用在我用iTextSharp創建的pdf中

我正在創建一個大表。 爲了在我的佈局中保持一致,我想使用DefaultCell類來設置一些默認設置,如字體,填充和對齊。 我沒有做正確的事情,因爲這些設置不適用於我的單元格。

下面是一些代碼:

var table = new PdfPTable(2) 
    { KeepTogether = true, TotalWidth = printWidth, LockedWidth = true, 
    HorizontalAlignment = 0, SpacingBefore = 0, SpacingAfter = 15f }; 
// Set default values: 
table.DefaultCell.Colspan = 1; 
table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT; 
table.DefaultCell.Padding = 5f; 
table.DefaultCell.PaddingLeft = 5f; 
table.DefaultCell.PaddingBottom = 5f; 
table.DefaultCell.VerticalAlignment = Element.ALIGN_BOTTOM; 
table.DefaultCell.BorderWidthBottom = 0f; 
table.DefaultCell.Phrase = new Phrase { Font = Blue11BoldFont }; 
table.DefaultCell.Border = Rectangle.NO_BORDER; 

table.AddCell(new PdfPCell(new Phrase("Foo")) 
    { HorizontalAlignment = Element.ALIGN_CENTER, MinimumHeight = 20f }); 
table.AddCell(new PdfPCell(new Phrase("Bar", Black10BoldFont)) 
    { Colspan = 4, HorizontalAlignment = Element.ALIGN_CENTER }); 

我本來期望應用於我的第一個單元格會用我的藍色字體和填充。 但沒有應用。事實上,當我刪除DefaultCell行時,我得到了相同的結果。

我一直在尋找幾個小時,我找到的大多數樣本都使用類似的東西。 任何建議都非常appreaciated。

回答

2

您正在自己創建PdfPCell對象。在這種情況下,默認單元格總是忽略

What is the PdfPTable.DefaultCell property used for?

當創建一個PdfPTable,添加細胞。

  • 一種方法是創建PdfPCell對象並使用addCell()方法添加該單元格。在這種情況下,您有責任定義每個單獨單元的屬性。
  • 另一種方法是使用快捷方式:您不創建PdfPCell,但可以使用addCell()方法向表中添加StringPhrase。在這種情況下,創建PdfPCell內部使用默認屬性。您可以更改默認屬性更改默認單元格的屬性。使用getDefaultCell()方法獲取默認單元格。

這不是一個錯誤,這是設計。你錯誤地解釋了「缺省單元」概念的含義。請注意,這個概念在免費電子書The Best iText Questions on StackOverflow中有解釋。

如果要在佈局中保持一致,最好的方法是創建自己的createCell()方法,該方法創建一個PdfPCell,您可以應用所有使用默認單元格的屬性。

+0

感謝您的解釋。正如你所建議的,我創建了自己的CreateCell()方法,現在它按預期工作。 –

相關問題