有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java的iText中,如何仅保留表的外部边框并删除表内的所有其他边框

我不熟悉iText。 我必须创建一个表。我只保留桌子的外框。删除表中的所有行。请任何人建议使用什么。我搜索了多少,我们可以改变细胞的边界。但我想要一个能适合整张桌子的东西。将其逐个添加到每个单元格将是一项乏味的工作。 我已经分享了一张我想要的图片样本。 Sample of table


共 (2) 个答案

  1. # 1 楼答案

    请阅读documentation on the official web site,尤其是以下问题的答案:

    学习完文档后,将所学内容组合成一个例子,例如TableBorder例子:

    这将创建一个没有任何边框的表:

    PdfPTable table = new PdfPTable(4);
    table.getDefaultCell().setBorder(Rectangle.NO_BORDER);
    for(int aw = 0; aw < 16; aw++){
        table.addCell("hi");
    }
    document.add(table);
    

    我们通过插入以下行来添加表格边框:

    table.setTableEvent(new BorderEvent());
    

    BorderEvent类如下所示:

    public class BorderEvent implements PdfPTableEvent {
        public void tableLayout(PdfPTable table, float[][] widths,
        float[] heights, int headerRows, int rowStart,
        PdfContentByte[] canvases) {
            float width[] = widths[0];
            float x1 = width[0];
            float x2 = width[width.length - 1];
            float y1 = heights[0];
            float y2 = heights[heights.length - 1];
            PdfContentByte cb = canvases[PdfPTable.LINECANVAS];
            cb.rectangle(x1, y1, x2 - x1, y2 - y1);
            cb.stroke();
            cb.resetRGBColorStroke();
        }
    }
    

    结果如下:

    enter image description here

    警告:如果这个例子不起作用,请阅读Why doesn't getDefaultCell().setBorder(PdfPCell.NO_BORDER) have any effect?的答案

    有人(我)花了很多天(甚至几个月)创建了这个包含所有这些问题和答案的网站。尊重我工作的人,可以使用该网站了解iText。其他人只是要求“给我举个例子”那些要求并得到榜样的人会因为我在他们的位置上所做的工作而获得金钱。那些从我的网站上了解iText的人,通过他们所做的工作获得资金,他们获得了知识。你可以说,那些只想得到例子的人得到了钱;而那些同样获得知识的人却变得富有

  2. # 2 楼答案

    也许我迟到了,但我找到了一个简单的解决方案,让我用iTextSharp实现了目标。 要获得周围有边框但没有单元格的表格,可以按照以下步骤操作:

    1. 用1列初始化一个新的PdfPTable,该列将用作辅助表
    2. 初始化PdpCell
    3. 初始化主表并将其添加到之前创建的单元格中
    4. 在创建的第一个表(辅助表)的单元格中添加边框
    5. 将单元格添加到aux表格中,就会得到结果

    代码的一个例子如下:

            PdfPTable tableAux = new PdfPTable(1);
            PdfPCell auxCell = new PdfPCell();
            auxCell.AddElement(myMainTable);
            tableAux.DefaultCell.Border = Rectangle.RECTANGLE;
            tableAux.DefaultCell.BorderColor = BaseColor.BLUE;
            tableAux.AddCell(auxCell);
    

    我是用c#实现的,但当然,你可以用java根据自己的需要调整逻辑。 致以最良好的祝愿