我是 iText 的新手,我正在尝试构建一个表格。
但是由于某种原因 table.getDefaultCell().setBorder(PdfPCell.NO_BORDER)
没有效果,我的表格仍然有边框。
这是我的代码:
PdfPTable table = new PdfPTable(new float[] { 1, 1, 1, 1, 1 });
table.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
Font tfont = new Font(Font.FontFamily.UNDEFINED, 10, Font.BOLD);
table.setWidthPercentage(100);
PdfPCell cell;
cell = new PdfPCell(new Phrase("Menge", tfont));
table.addCell(cell);
cell = new PdfPCell(new Phrase("Beschreibung", tfont));
table.addCell(cell);
cell = new PdfPCell(new Phrase("Einzelpreis", tfont));
table.addCell(cell);
cell = new PdfPCell(new Phrase("Gesamtpreis", tfont));
table.addCell(cell);
cell = new PdfPCell(new Phrase("MwSt", tfont));
table.addCell(cell);
document.add(table);
你知道我做错了什么吗?
最佳答案
您正在混合两个不同的概念。
概念 1: 您手动定义每个 PdfPCell
,例如:
PdfPCell cell = new PdfPCell(new Phrase("Menge", tfont));
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);
在这种情况下,您在单元本身上定义单元的每个方面、每个属性。
概念 2: 您允许 iText 隐式创建
PdfPCell
,例如:table.addCell("Adding a String");
table.addCell(new Phrase("Adding a phrase"));
在这种情况下,您可以在默认单元格级别定义属性。当 iText 在您的位置创建
PdfPCell
时,这些属性将在内部使用。结论:
您可以分别为所有
PdfPCell
实例定义边框,或者让 iText 创建 PdfPCell
实例,在这种情况下,您可以在默认单元格的级别定义边框。如果您选择第二个选项,您可以像这样调整您的代码:
PdfPTable table = new PdfPTable(new float[] { 1, 1, 1, 1, 1 });
table.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
Font tfont = new Font(Font.FontFamily.UNDEFINED, 10, Font.BOLD);
table.setWidthPercentage(100);
table.addCell(new Phrase("Menge", tfont));
table.addCell(new Phrase("Beschreibung", tfont));
table.addCell(new Phrase("Einzelpreis", tfont));
table.addCell(new Phrase("Gesamtpreis", tfont));
table.addCell(new Phrase("MwSt", tfont));
document.add(table);
这个决定是根据经验设计的:它提供了最灵活的处理单元和属性的方法。
关于java - iText 5 getDefaultCell().setBorder(PdfPCell.NO_BORDER) 没有效果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27212695/