我使用 iTextSharp 创建的 pdf 中未使用 DefaultCell 属性
DefaultCell properties are not used in my pdf created with iTextSharp
我使用 iTextSharp v5.5.6
我正在创建一个大 table。
为了在我的布局中保持一致,我想使用 DefaultCell class 来设置一些默认设置,如字体、填充和对齐方式。
我没有做正确的事情,因为设置没有应用到我的单元格。
这是一些代码:
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 行时,我得到了相同的结果。
我已经搜索了几个小时,我发现的大多数样本都使用类似的东西。
非常感谢任何建议。
您正在自己创建 PdfPCell
个对象。在这种情况下,默认单元格 总是 被忽略。
见What is the PdfPTable.DefaultCell property used for?
创建 PdfPTable
时,您添加单元格。
- 一种方法是创建一个
PdfPCell
对象并使用 addCell()
方法添加该单元格。在这种情况下,您有责任定义每个单独单元格的属性。
- 另一种方法是使用快捷方式:您不创建
PdfPCell
,而是将 String
或 Phrase
添加到 table使用 addCell()
方法。在这种情况下,PdfPCell
是使用 默认属性 在内部 创建的 。您可以通过更改默认单元格的属性来更改默认属性。默认单元格是使用getDefaultCell()
方法获取的。
这不是错误,这是设计使然。您误解了 "default cell" 概念的含义。请注意,免费电子书 The Best iText Questions on Whosebug.
中解释了这个概念
如果您想在布局中保持一致,最好的方法是创建您自己的 createCell()
方法,该方法创建一个 PdfPCell
,您可以将所有属性应用到该 PdfPCell
您使用的是默认单元格。
我使用 iTextSharp v5.5.6
我正在创建一个大 table。 为了在我的布局中保持一致,我想使用 DefaultCell class 来设置一些默认设置,如字体、填充和对齐方式。 我没有做正确的事情,因为设置没有应用到我的单元格。
这是一些代码:
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 行时,我得到了相同的结果。
我已经搜索了几个小时,我发现的大多数样本都使用类似的东西。 非常感谢任何建议。
您正在自己创建 PdfPCell
个对象。在这种情况下,默认单元格 总是 被忽略。
见What is the PdfPTable.DefaultCell property used for?
创建 PdfPTable
时,您添加单元格。
- 一种方法是创建一个
PdfPCell
对象并使用addCell()
方法添加该单元格。在这种情况下,您有责任定义每个单独单元格的属性。 - 另一种方法是使用快捷方式:您不创建
PdfPCell
,而是将String
或Phrase
添加到 table使用addCell()
方法。在这种情况下,PdfPCell
是使用 默认属性 在内部 创建的 。您可以通过更改默认单元格的属性来更改默认属性。默认单元格是使用getDefaultCell()
方法获取的。
这不是错误,这是设计使然。您误解了 "default cell" 概念的含义。请注意,免费电子书 The Best iText Questions on Whosebug.
中解释了这个概念如果您想在布局中保持一致,最好的方法是创建您自己的 createCell()
方法,该方法创建一个 PdfPCell
,您可以将所有属性应用到该 PdfPCell
您使用的是默认单元格。