我已经看到如何在这个问题中为表格单元格设置圆形边框
How to create a rounded corner table using iText\iTextSharp?
但是有可能制作没有边框但是有色和圆形背景的单元格吗?
答案 0 :(得分:2)
要实现这一目标,您需要cell events。我在书中提供了不同的例子。例如,请参阅calendar.pdf:
创建白色单元格的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()
方法将被执行。