gpt4 book ai didi

java - iTextPdf 中的单元格之间是否可以有空格?

转载 作者:行者123 更新时间:2023-11-30 08:14:37 29 4
gpt4 key购买 nike

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

我有一个包含 2 列的表格,我正在尝试在单元格上绘制边框底部。我希望每个边框之间的空间与单元格填充相同。

我正在使用下面的代码:

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

我该怎么做?

最佳答案

你可能想要这样的效果:

enter image description here

这在 my book 中有解释,更具体地说在 PressPreviews示例。

您需要先移除边框:

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然后加上或减去 p / 2来自 PdfPCellEvent 中的单元格维度实现。

关于java - iTextPdf 中的单元格之间是否可以有空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29391037/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com