如何使用itextsharp在两种背景颜色之间旋转行

时间:2016-06-28 20:26:46

标签: colors itext

基本上,对于每个奇数行,显示X颜色。对于每个偶数行,显示Y颜色。

这就是所需的所有逻辑,但我似乎无法通过iTextsharp找到一个优雅的解决方案

我的表名是PdfPTable logotable

1 个答案:

答案 0 :(得分:0)

你说“旋转”的意思是“交替”。这在iText in Action书的第5章中的示例AlternatingBackground中进行了解释。可以在此处找到该示例的C#版本:AlternatingBackground.cs

您创建了一个TableEvent实现,您可以为其定义此方法:

public void TableLayout(
  PdfPTable table, float[][] widths, float[] heights,
  int headerRows, int rowStart, PdfContentByte[] canvases
) {
  int columns;
  Rectangle rect;
  int footer = widths.Length - table.FooterRows;
  int header = table.HeaderRows - table.FooterRows + 1;
  for (int row = header; row < footer; row += 2) {
    columns = widths[row].Length - 1;
    rect = new Rectangle(
      widths[row][0], heights[row],
      widths[row][columns], heights[row + 1]
    );
    rect.BackgroundColor = BaseColor.YELLOW;
    rect.Border = Rectangle.NO_BORDER;
    canvases[PdfPTable.BASECANVAS].Rectangle(rect);
  }
} 

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

IPdfPTableEvent Pevent = new AlternatingBackground();
logotable.TableEvent = Pevent;

首先尝试独立示例以查看效果。然后根据自己的需要调整AlternatingBackground类。