2015-11-16 40 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()方法,现在它按预期工作。 –

相关问题