【问题标题】:How to create a rounded corner table using iText\iTextSharp? [duplicate]如何使用 iText\iTextSharp 创建圆角表? [复制]
【发布时间】:2023-03-26 04:13:01
【问题描述】:

我必须创建一个带有圆角的表格,类似这样:

我可以用 iTextSharp 做吗?

【问题讨论】:

    标签: c# pdf pdf-generation itextsharp itext


    【解决方案1】:

    这是使用单元格事件完成的。

    请参阅我书中的日历示例 (Java / C#)。

    确保您没有向单元格添加任何“自动”边框,而是在单元格事件中自己绘制边框:

    table.DefaultCell.Border  = PdfPCell.NO_BORDER;
    table.DefaultCell.CellEvent = new RoundedBorder();
    

    RoundedBorder 类将如下所示:

    class RoundedBorder : 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.Stroke();
      }
    }
    

    您当然可以微调值 1.5、3 和 4 以获得不同的效果。

    【讨论】:

    • 我理解你的例子,但是当我尝试将它应用到我的例子中时(我需要它到页脚表中)不起作用,我仍然有经典的角落,我创建了一个与具体案例在这个链接:stackoverflow.com/questions/23652856/… 如果对你来说不是问题,你能帮帮我吗? :-) TNX
    • 我已经回答了这个问题。
    • @BrunoLowagie 如果我想为单元格设置背景色,但仅包含在圆形边框内。你会怎么解决这个问题?
    • 我设法通过设置 cb.setColorFill() 然后使用 cb.fill() 而不是 cb.stroke() 来解决它
    猜你喜欢
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多