0

我使用 iTextSharp v5.5.6

我正在创建一张大桌子。为了在我的布局中保持一致,我想使用 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 行时,我得到了相同的结果。

我已经搜索了几个小时,我发现的大多数样本都使用类似的东西。任何建议都非常受欢迎。

4

1 回答 1

3

您正在PdfPCell自己创建对象。在这种情况下,默认单元格总是忽略。

请参阅PdfPTable.DefaultCell 属性的用途是什么?

创建 时PdfPTable,您添加单元格。

  • 一种方法是创建一个对象并使用该方法PdfPCell添加该单元格。addCell()在这种情况下,您负责定义每个单独单元格的属性。
  • 另一种方法是使用快捷方式:您不创建 a PdfPCell,而是使用该方法将 aString或 a添加Phrase到表中addCell()。在这种情况下, aPdfPCell是使用默认属性在内部创建的。您可以通过更改默认单元格的属性来更改默认属性。使用该方法获得默认单元格。getDefaultCell()

这不是错误,这是设计使然。您误解了“默认单元格”概念的含义。请注意,此概念已在 StackOverflow 上的免费电子书 The Best iText Questions中进行了解释。

如果您想在布局中保持一致,最好的方法是创建您自己的createCell()方法,该方法创建一个PdfPCell您应用所有使用默认单元格的属性的方法。

于 2015-11-16T14:04:34.923 回答