如何引入具有背景颜色的圆形单元格?

时间:2014-11-07 10:13:18

标签: c# pdf itextsharp

我已经看到如何在这个问题中为表格单元格设置圆形边框

How to create a rounded corner table using iText\iTextSharp?

但是有可能制作没有边框但是有色和圆形背景的单元格吗?

1 个答案:

答案 0 :(得分:2)

要实现这一目标,您需要cell events。我在书中提供了不同的例子。例如,请参阅calendar.pdf

enter image description here

创建白色单元格的Java代码如下所示:

class CellBackground implements PdfPCellEvent {

    public void cellLayout(PdfPCell cell, Rectangle rect,
            PdfContentByte[] canvas) {
        PdfContentByte cb = canvas[PdfPTable.BACKGROUNDCANVAS];
        cb.roundRectangle(
            rect.getLeft() + 1.5f, rect.getBottom() + 1.5f, rect.getWidth() - 3,
            rect.getHeight() - 3, 4);
        cb.setCMYKColorFill(0x00, 0x00, 0x00, 0x00);
        cb.fill();
    }
}

对于此代码的C#版本,请转到Where do I find the C# examples?,然后单击与示例的Java版本章节对应的章节。

例如,PdfCalendar.cs

class CellBackground : IPdfPCellEvent {
  public void CellLayout(
    PdfPCell cell, Rectangle rect, PdfContentByte[] canvas
) {
    PdfContentByte cb = canvas[PdfPTable.BACKGROUNDCANVAS];
    cb.RoundRectangle(
      rect.Left + 1.5f, 
      rect.Bottom + 1.5f, 
      rect.Width - 3,
      rect.Height - 3, 4
    );
    cb.SetCMYKColorFill(0x00, 0x00, 0x00, 0x00);
    cb.Fill();
  }
}

您可以像这样使用此事件:

CellBackground cellBackground = new CellBackground();
cell.CellEvent = cellBackground;

现在,当单元格呈现到页面时,CellLayout()方法将被执行。