geometry - 将画布放在 Div 元素内
问题描述
我正在尝试在 itext 7 中创建一个圆圈,然后将此圆圈放置在文档中我需要的任何位置。
该文档是使用 div 布局的,我已经设法使用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 内的圆圈中,那么如果有人可以将我指向一个教程或一些我可以遵循的文档,我会很乐意改变这种方法。
解决方案
如果有人正在寻找一种简单的方法来做到这一点,那么您可以draw
覆盖Div
.
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 位置进行一些校正,对于放置在圆圈内的任何文本也是如此。
推荐阅读
- c - 如何验证结构中是否有相同的信息?
- node.js - 在 Node.js Express 路由器中使用正则表达式忽略任何字符
- r - 按特定值 R 过滤数据框
- reactjs - 如何运行同一个 React 应用程序的多个实例?
- c# - 有人能告诉我这段代码使用的是哪个版本的 Angular 吗?
- windows - 如何通过内部命令使用 CreateProcessWithLogonW
- sql - SQL 查询不能使用 NOT LIKE 来获取结果
- vba - 将带有图片的默认签名插入电子邮件
- impala - 请帮助在黑斑羚的条件下求和
- javascript - 我不断收到一个参考错误,说“文档”没有定义