You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在iText7中创建圆形并放置于Div布局的PDF文档指定位置

更优雅地在iText7的Div布局中添加可定位圆形

看起来你已经用PdfCanvas搞定了画圆的基础功能,但既然你用的是Div这种高层布局组件,其实可以用更贴合iText7布局体系的方式来实现——既能避免手动计算位置的麻烦,还能让圆形更好地融入你的Div布局流里。

推荐实现方式:用Canvas + Circle组件嵌入布局

iText7提供了Canvas作为图形元素的布局容器,你可以把它当成一个能容纳图形的"小容器"加到Div里,这样圆形的位置可以和Div的布局联动,也能轻松设置绝对/相对位置。

下面是具体的代码示例:

PdfDocument pdfDoc = new PdfDocument(writer);
Document doc = new Document(pdfDoc);
PdfPage pdfPage = pdfDoc.addNewPage();

// 创建你的Div容器
Div div = new Div();
div.setBackgroundColor(Color.CYAN);
div.setHeight(100.0F); // 可根据需求调整高度
div.setWidth(200.0F);  // 可根据需求调整宽度

// 创建Canvas,关联当前页面画布,同时指定Canvas自身尺寸
Canvas canvas = new Canvas(pdfPage.newContentStreamBefore(), pdfPage.getResources(), pdfDoc);
canvas.setWidth(50.0F);
canvas.setHeight(50.0F);

// 创建圆形:参数依次为圆心X坐标、圆心Y坐标、半径
Circle circle = new Circle(25, 25, 20);
circle.setFillColor(Color.RED);       // 设置圆形填充色
circle.setStrokeColor(Color.BLACK);    // 设置圆形边框色
circle.setStrokeWidth(1);              // 设置边框宽度

// 将圆形加入Canvas,再把Canvas嵌入Div
canvas.add(circle);
div.add(canvas);

// 如果需要固定绝对位置,可给Canvas设置固定坐标
// canvas.setFixedPosition(100, 200, 50);

// 最后将Div加入文档
doc.add(div);
doc.close();

这种方式比直接用PdfCanvas更优的原因:

  • 贴合布局系统:Canvas是iText7布局API的一部分,能和Div、Paragraph等元素一起参与布局,不用手动计算页面坐标
  • 可维护性更高:用Circle这种高层图形元素,修改颜色、大小、位置都更直观,不需要直接操作底层画布的路径绘制
  • 灵活定位:既可以让Canvas跟着Div的布局流走,也可以通过setFixedPosition()设置绝对位置,完美满足你"任意指定位置"的需求

如果你的场景需要更复杂的图形组合,这种方式也能轻松扩展——比如在同一个Canvas里添加多个图形元素。

内容的提问来源于stack exchange,提问作者berimbolo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:43:54