如何双线底部边框适用于iText的细胞(How to apply double line botto

2019-10-24 02:32发布

我需要你在应用双线底部边框只有一个细胞的帮助,并删除其他顶部,左,右的边界。 我可以通过使用下面的代码来实现的虚线格边框:

class DoubleCell implements PdfPCellEvent {

   public void cellLayout(PdfPCell cell, Rectangle position,

      PdfContentByte[] canvases) {
      PdfContentByte canvas = canvases[PdfPTable.LINECANVAS];
      canvas.setLineDash(5f, 5f);
      canvas.rectangle(position.getLeft(), position.getBottom(),
                       position.getWidth(), position.getHeight());
      canvas.stroke();

           }
   }

和PDF的代码是:

Paragraph tableParagraph = new Paragraph();
tableParagraph.setAlignment(Element.ALIGN_CENTER);
PdfPTable table = new PdfPTable(2);
table.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
Font total = new Font(Font.TIMES_ROMAN, 16);
PdfPCell cel3a = new PdfPCell(new Paragraph("Total",total));
PdfPCell cel3b = new PdfPCell(new Paragraph("Cell 1",total));
cel3a.setBorder(Rectangle.NO_BORDER);
cel3b.setBorder(Rectangle.NO_BORDER );
cel3b.setCellEvent(new DoubleCell());
table.addCell(cel3a);
table.addCell(cel3b);
tableParagraph.add(table);

所以,请帮助应用双线底部边框只有没有其他的边界。

Answer 1:

在代码中,你画一个矩形:

canvas.rectangle(position.getLeft(), position.getBottom(),
    position.getWidth(), position.getHeight());
canvas.stroke();

如果你想画两条线,你需要绘制两条线:

// construct first line:
canvas.moveTo(position.getLeft(), position.getBottom());
canvas.lineTo(position.getRight(), position.getBottom());
// construct second line (4 user units lower):
canvas.moveTo(position.getLeft(), position.getBottom() - 4);
canvas.lineTo(position.getRight(), position.getBottom() - 4);
// draw lines
canvas.stroke();

请适应position.getBottom()position.getBottom() - 4如果你想行是在不同的位置。 您可能还需要引进一些额外填充到你的细胞,以适应多余的线条。



文章来源: How to apply double line bottom border to a cell in iText