【发布时间】:2016-02-11 12:58:38
【问题描述】:
我是 iText 的新手。 我必须创建一个表。我必须只保留表格的外边框。删除表格内的所有行。可以请任何人建议使用什么。我搜索了多少我们可以更改单元格的边界。但我想要一些适用于整张桌子的东西。将它一个一个地添加到每个单元格将是一项繁琐的工作。 我已经分享了我想要的示例图像。
【问题讨论】:
我是 iText 的新手。 我必须创建一个表。我必须只保留表格的外边框。删除表格内的所有行。可以请任何人建议使用什么。我搜索了多少我们可以更改单元格的边界。但我想要一些适用于整张桌子的东西。将它一个一个地添加到每个单元格将是一项繁琐的工作。 我已经分享了我想要的示例图像。
【问题讨论】:
也许我迟到了,但我找到了一个简单的解决方案,让我使用 iTextSharp 实现了目标。 要获得一个有边框但没有单元格的表格,您可以按照以下步骤操作:
代码示例如下:
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 使逻辑适应您的需求。 最好的问候!
【讨论】:
请阅读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();
}
}
结果如下:
警告:如果此示例不起作用,请阅读Why doesn't getDefaultCell().setBorder(PdfPCell.NO_BORDER) have any effect?的答案
有人(我)花了很多天(甚至几个月)创建这个包含所有这些问题和答案的网站。尊重我工作的人会使用该网站了解 iText。其他人只是要求“给我一个例子”。要求并获得榜样的人会因我在他们的位置上所做的工作而获得金钱。从我的网站了解 iText 的人通过他们所做的工作获得了金钱并且他们获得了知识。你可以说只对获得示例感兴趣的人得到金钱;而那些也获得知识的人,会变得富有。
【讨论】: