【发布时间】:2014-04-07 15:18:55
【问题描述】:
我是 iTextSharp(用于 C# 的 iText 移植)的新手,我对以下情况感到抓狂。
在我正在处理的应用程序中,我有一个以这种方式定义的表:
table = new PdfPTable(2);
table.SetWidths(new int[] { 100, 500 });
//table.WidthPercentage = 95;
table.AddCell(new PdfPCell(new Phrase("Description:")) { Border = PdfPCell.BOTTOM_BORDER, Padding = 5, MinimumHeight = 50, PaddingTop = 15 });
table.AddCell(new PdfPCell(new Phrase(currentVuln.ShortSummary)) { Border = PdfPCell.BOTTOM_BORDER, Padding = 5, MinimumHeight = 50, PaddingTop = 15 });
_document.Add(table);
你可以看到一个新的单元格被添加到表中创建它传递给它必须在其自身显示的字符串并在传递一些图形设置之后。
例如:
table.AddCell(new PdfPCell(new Phrase("Description:")) { Border = PdfPCell.BOTTOM_BORDER, Padding = 5, MinimumHeight = 50, PaddingTop = 15 });
它会添加一个显示字符串 Description 的新单元格,并应用 {...} 块中的图形设置。
我的第一个疑问是:这个语法到底是什么?是 C# 语法还是与 iTextSharp 相关的东西?
然后我很想知道应用此设置时究竟会发生什么,特别是在评估此部分时:Border = PdfPCell.BOTTOM_BORDER
1) Border 是 iTextSharp.text.Rectangle 类中的一个 int 值,它采用 PdfPCell.BOTTOM_BORDER 返回值
2) PdfCell 是另一个位于 iTextSharp.text.pdf 命名空间中的类,它不包含 BOTTOM_BORDER 属性,但这个类是这样定义的:
public class PdfPCell : Rectangle, IAccessibleElement
所以 PdfCell 类本身就是一个 Rectangle 并且 BOTTOM_BORDER 属性属于 Rectangle 类,实际上在这里我有
public const int BOTTOM_BORDER = 2;
好的...所以我认为这样做:
Border = PdfPCell.BOTTOM_BORDER 与以下操作相同:Border = 2 为我的单元格设置特定类型的边框。对吗?
疑问是:为什么我必须传递给 PdfPCell 类(即一个 Rectangle)来设置边框,而不是直接在 Rectangle 上设置?
我也有以下问题:by Border = PdfPCell.BOTTOM_BORDER 我只显示单元格的下边框,如何显示单元格的下边框和上边框?
Tnx
【问题讨论】:
标签: c# asp.net .net itextsharp itext