iText 5 getDefaultCell()。setBorder(PdfPCell.NO_BORDER)无效

时间:2014-11-30 11:25:54

标签: java itext

我是 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);

你知道我做错了什么吗?

3 个答案:

答案 0 :(得分:7)

你混合了两个不同的概念。

概念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);

这个决定是基于经验设计的:它提供了最灵活的细胞和属性。

答案 1 :(得分:1)

  

cell.setBorder(Rectangle.NO_BORDER);

你必须在单元格上设置NO_BORDER

e.g。

  

cell = new PdfPCell(new Phrase(&#34; Menge&#34;,tfont));

  cell.setBorder(Rectangle.NO_BORDER);
  table.addCell(细胞);

refer itext here

答案 2 :(得分:0)

如果你想创建一个新的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);
PdfPCell cell = new PdfPCell(table.getDefaultCell());
cell.setPhrase(new PdfPCell(new Phrase("Menge", tfont)));
table.addCell(cell);
document.add(table);