如何才能显示我的PdfPTable边框和背景颜色(iTextSharp)?

时间:2015-05-18 18:09:57

标签: pdf-generation itextsharp pdfptable

正如你所看到的,我有一张运动边框和背景颜色的桌子(第1节):

enter image description here

...但是第3节缺乏这些裁缝改进,我不知道为什么。

以下是第1部分的相关代码(显示应该如此):

// Section 3
PdfPTable tblSection3 = new PdfPTable(1);
tblSection3.WidthPercentage = 100;
tblSection3.SpacingBefore = 10f;
//tblSection3.HorizontalAlignment = Element.ALIGN_LEFT;

Chunk sec3PayeeStatus = new Chunk("Section 3: Payee Status", timesRoman9BoldFont);
Chunk requiredFields = new Chunk("    * Required Fields", timesRoman9BoldRedFont);
Paragraph parSection3 = new Paragraph();
parSection3.Add(sec3PayeeStatus);
parSection3.Add(requiredFields);
//Phrase phrasesec1Heading = new Phrase("Section 1: Payment Information", timesRoman9BoldFont);
PdfPCell cellSec3Heading = GetCellForBorderedTable(parSection3, Element.ALIGN_LEFT, ucscgold);
tblSection3.AddCell(cellSec3Heading);

doc.Add(parSection3);                        

...这里是第3部分(不会显示它应该如此):

// try using a Phrase instead of a Paragraph
Chunk sec3PayeeStatus = new Chunk("Section 3 PayeeStatus", 
    timesRoman9BoldFont);
Chunk requiredFields = new Chunk("    * Require Fields", 
    timesRoman9BoldRedFont);
Phrase phraseSection3 = new Phrase();
phraseSection3.Add(sec3PayeeStatus);
phraseSection3.Add(requiredFields);
PdfPCell cellSec3Heading GetCellForBorderedTable(phraseSection3, 
    Element.ALIGN_LEFT, ucscgold);
tblSection3.AddCell(cellSec3Heading);
doc.Add(phraseSection3);

我想念或遗忘的是什么?表创建和设置的不同之处在于单元格/列的数量,以及相关的声明(浮点数组)和属性(setWidths())。添加到PdfPCell的代码与Phrase不同 用于第1部分(显示我想要的),段落用于第3部分(没有),但我试过了:

Phrase sec3PayeeStatus = new Phrase("Section 3: Payee Status", timesRoman9BoldFont);
Phrase requiredFields = new Phrase("    * Required Fields", timesRoman9BoldRedFont);
Paragraph parSection3 = new Paragraph();
parSection3.Add(sec3PayeeStatus);
parSection3.Add(requiredFields);
PdfPCell cellSec3Heading = GetCellForBorderedTable(parSection3, Element.ALIGN_LEFT, ucscgold);
tblSection3.AddCell(cellSec3Heading);
doc.Add(parSection3);

......但事情并没有好转,事实上情况有点糟糕,因为" SpacingBefore"似乎没有"采取"

最后(到目前为止),我尝试使用短语代替大块,就像这样:

private static PdfPCell GetCellForBorderedTable(Phrase phrase, int align, BaseColor color)
{
    PdfPCell cell = new PdfPCell(phrase);
    cell.HorizontalAlignment = align;
    cell.PaddingBottom = 2f;
    cell.PaddingTop = 0f;
    cell.BackgroundColor = color;
    cell.VerticalAlignment = PdfPCell.ALIGN_CENTER;
    return cell;
}

......但这并不比第一次尝试更好,更糟或不同(至少我得到了垂直空间,但是,将第2和第3部分分开)。

如何显示单元格边框和背景颜色?

更新

这里是GetCellForBorderedTable():

{{1}}

1 个答案:

答案 0 :(得分:0)

问题是(在我比较代码比较实用程序中的代码,即KDiff3之前,不是"可见"我)将段落而不是表格添加到doc:

doc.Add(parSection3);

现在我已将其更改为:

doc.Add(tblSection3);

......它有效。