Код, который вы используете, имеет много предположений о том, как реализация работает внутри TableRenderer
.
Так как в вашем коде вы рисуете пунктирную границу, я должен указать вам DashedBorder
класс, который вы уже можете использовать из коробки:
Border customBorder = new DashedBorder(ColorConstants.RED, 2);
table.addCell(new Cell().add(new Paragraph("A2")).setBorder(customBorder));
Вы также можете реализовать свой пользовательский класс границы следующим образом:
private static class CustomBorder extends Border {
protected CustomBorder(Color color, float width) {
super(color, width);
}
@Override
public void draw(PdfCanvas canvas, float x1, float y1, float x2, float y2, Side defaultSide, float borderWidthBefore, float borderWidthAfter) {
}
@Override
public void drawCellBorder(PdfCanvas canvas, float x1, float y1, float x2, float y2, Side defaultSide) {
canvas.
saveState().
setStrokeColor(transparentColor.getColor());
transparentColor.applyStrokeTransparency(canvas);
canvas.
setLineDash(3, 3).
setLineWidth(width).
moveTo(x1, y1).
lineTo(x2, y2).
stroke().
restoreState();
}
@Override
public int getType() {
return Border.DASHED;
}
}
Затем просто создайте экземпляр и используйте его в setBorder
:
Border customBorder = new CustomBorder(ColorConstants.RED, 2);
table.addCell(new Cell().add(new Paragraph("A2")).setBorder(customBorder));