如何使用itext pdf java
设置pdf表的轮廓边框 ________________________________________
| cell 1 cell2 cell3 cell4 |
| cell 5 cell2 cell3 cell4 |
| cell 9 cell2 cell3 cell4 |
| cell 1 cell2 cell3 cell4 |
| cell 1 cell2 cell3 cell4 |
|________________________________________|
答案 0 :(得分:1)
在iText 7中,请参阅“iText 7:building blocks”教程的Chapter 5,我们在此创建此表:
可以在此处找到代码:CellBorders
Table table2 = new Table(new float[]{2, 1, 1});
table2.setMarginTop(10);
table2.setBorder(new SolidBorder(1));
table2.setWidthPercent(80);
table2.setHorizontalAlignment(HorizontalAlignment.CENTER);
table2.addCell(new Cell(1, 3)
.add("Cell with colspan 3").setBorder(Border.NO_BORDER));
table2.addCell(new Cell(2, 1)
.add("Cell with rowspan 2").setBorder(Border.NO_BORDER));
table2.addCell(new Cell()
.add("row 1; cell 1").setBorder(Border.NO_BORDER));
table2.addCell(new Cell()
.add("row 1; cell 2").setBorder(Border.NO_BORDER));
table2.addCell(new Cell()
.add("row 2; cell 1").setBorder(Border.NO_BORDER));
table2.addCell(new Cell()
.add("row 2; cell 2").setBorder(Border.NO_BORDER));
document.add(table2);
在iText 5中,您必须将所有单元格的所有边框设置为NO_BORDER
,并且必须使用表格事件绘制表格的边框。这在“iText in Action - Second Edition”一书的第5章中进行了解释,更具体地说,在PressPreviews示例中。
这是您需要的桌面活动:
public class MyTableEvent implements PdfPTableEvent {
public void tableLayout(PdfPTable table, float[][] width, float[] height,
int headerRows, int rowStart, PdfContentByte[] canvas) {
float widths[] = width[0];
float x1 = widths[0];
float x2 = widths[widths.length - 1];
float y1 = height[0];
float y2 = height[height.length - 1];
PdfContentByte cb = canvas[PdfPTable.LINECANVAS];
cb.rectangle(x1, y1, x2 - x1, y2 - y1);
cb.stroke();
cb.resetRGBColorStroke();
}
}
您可以将此事件声明为如下所示:
table.setTableEvent(new MyTableEvent());
确保单元格没有任何边框!
重要提示:如果您要使用iText开始新项目,则应考虑使用iText 7.正如您所看到的,API已经发生了一些变化。