Geometry 在Div元素中放置画布

Geometry 在Div元素中放置画布,geometry,itext7,Geometry,Itext7,我试图在itext 7中创建一个圆圈,然后将此圆圈放置在文档中需要的任何位置 文档是使用divs布局的,我使用PdfCanvas创建了一个圆圈 下面是我试图实现的一个片段,很可能有更好的方法: PdfDocument pdfDoc = new PdfDocument(writer); Document doc = new Document(pdfDoc); PdfPage pdfPage = pdfDoc.addNewPage(); Div div = new Div();

我试图在itext 7中创建一个圆圈,然后将此圆圈放置在文档中需要的任何位置

文档是使用divs布局的,我使用
PdfCanvas
创建了一个圆圈

下面是我试图实现的一个片段,很可能有更好的方法:

PdfDocument pdfDoc = new PdfDocument(writer);

  Document doc = new Document(pdfDoc);

  PdfPage pdfPage = pdfDoc.addNewPage();

  Div div = new Div();                        
  div.setBackgroundColor(Color.CYAN);
  div.setHeight(10.0F);
  div.add(new Paragraph(" ").setFont(PdfFontFactory.createFont(FontConstants.COURIER_BOLD)));  
  doc.add(div);

  PdfCanvas canvas = new PdfCanvas(pdfPage);  
   Color white = Color.WHITE;  
   Color black = Color.BLACK;

   canvas.setColor(white, true)
   .setStrokeColor(black) 
   .circle(15, 800, 8)      
   .fillStroke();     

   canvas.beginText()      
   .setFontAndSize(PdfFontFactory.createFont(FontConstants.COURIER_BOLD), 10)               
   .setColor(black, true)
   .moveText(15 - 3, 800 - 3)
   .showText("1")
   .endText();

  doc.close();  

是否有正确的方式包装某些文本(数字)在一个可以放置在div内的圆圈中,如果有人能告诉我一个教程或一些我可以遵循的文档,我会很高兴地改成这个方法。

如果有人想找一个简单的方法来做这件事,那么你可以覆盖
div
draw
方法

public class Circle extends Div
{
@Override
public IRenderer getRenderer()
{
    return new CircleRenderer(this);
}

private class CircleRenderer extends DivRenderer
{

    public CircleRenderer(final Circle circle)
    {
        super(circle);
        setPadding(PADDING);
    }


    @Override
    public void draw(final DrawContext drawContext)
    {
        final PdfCanvas canvas = drawContext.getCanvas();


        final Rectangle area = this.occupiedArea.getBBox();
        final float x = area.getX();
        final float y = area.getY();

        canvas.circle(x, y, 8);

        canvas.fillStroke();            

        super.draw(drawContext);
    }
}
}
在我画完画布之后,我需要对x和y的位置做一些修正,并且对放置在圆圈内的任何文本做同样的修正