Java iTextPdf中的单元格之间是否可能有空格?

Java iTextPdf中的单元格之间是否可能有空格?,java,itext,itextpdf,pdfptable,Java,Itext,Itextpdf,Pdfptable,iTextPdf是否允许设置表中单元格之间的间距 我有一个有两列的表格,我正试图在单元格底部画一个边框。 我希望每个边框之间的间距与单元格填充相同 我正在使用以下代码: PdfPTable table = new PdfPTable(2); table.setTotalWidth(95f); table.setWidths(new float[]{0.5f,0.5f}); table.setHorizontalAlignment(Element.ALIGN_CEN

iTextPdf是否允许设置表中单元格之间的间距

我有一个有两列的表格,我正试图在单元格底部画一个边框。 我希望每个边框之间的间距与单元格填充相同

我正在使用以下代码:

    PdfPTable table = new PdfPTable(2);
    table.setTotalWidth(95f);
    table.setWidths(new float[]{0.5f,0.5f});
    table.setHorizontalAlignment(Element.ALIGN_CENTER);

    Font fontNormal10 = new Font(FontFamily.TIMES_ROMAN, 10, Font.NORMAL);
    PdfPCell cell = new PdfPCell(new Phrase("Performance", fontNormal10));
    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    cell.setBorder(Rectangle.BOTTOM);
    cell.setPaddingLeft(10f);
    cell.setPaddingRight(10f);

    table.addCell(cell);
    table.addCell(cell);
    table.addCell(cell);
    table.addCell(cell);

    document.add(table);

我如何做到这一点?

您可能想要这种效果:

这在中进行了解释,更具体地说,在示例中

您需要先删除边框:

cell.setBorder(PdfPCell.NO_BORDER);
您需要在单元格事件中自己绘制边框:

public class MyBorder implements PdfPCellEvent {
    public void cellLayout(PdfPCell cell, Rectangle position,
        PdfContentByte[] canvases) {
        float x1 = position.getLeft() + 2;
        float x2 = position.getRight() - 2;
        float y1 = position.getTop() - 2;
        float y2 = position.getBottom() + 2;
        PdfContentByte canvas = canvases[PdfPTable.LINECANVAS];
        canvas.rectangle(x1, y1, x2 - x1, y2 - y1);
        canvas.stroke();
    }
}
向单元格声明单元格事件,如下所示:

cell.setCellEvent(new MyBorder());

在我的示例中,我从单元格的尺寸中添加或减去2个用户单位。在您的例子中,您可以定义一个填充
p
,然后在
PdfPCellEvent
实现中从单元格维度中添加或减去
p/2

@Jens您知道我如何在上面的示例中只显示内部矩形而不包括外部表吗?@ericleit“内部矩形”是什么意思?@Jens我指的是单元格级边框,而不是表级边框,但我通过将表边框设置为0来理解。谢谢你的回复!