ITEXT7中,如何在不覆盖当前内容的情况下插入签证持有人?

In ITEXT7, how to insert a visa holder without overwriting current content?

我正在使用 itext 7.0.0。我正在写一个 PDF,最后,我插入了一个包含 Name/date/signature 的部分,如下所示:

但是,在某些情况下,最后一部分会覆盖已经存在的部分,例如:

下面是我如何插入 name/date/signature 矩形:

private fun placeVisa(document: Document): Document {
        val pdfCanvas = PdfCanvas(document.pdfDocument.getPage(document.pdfDocument.numberOfPages))
        val width = 200f
        val height = 100f
        val rectangle = Rectangle((document.pdfDocument.defaultPageSize.width - width) * 0.95f, // x position
                height / 2, // y position
                width, // actual width
                height) // actual height
        pdfCanvas.rectangle(rectangle)
        pdfCanvas.stroke()
        val canvas = Canvas(pdfCanvas, document.pdfDocument, rectangle)
        val rectangleContent = Paragraph(Text("Name, date and signature :"))
        rectangleContent.marginLeft = 5f
        canvas.add(rectangleContent)
        return document

我怎样才能做到不覆盖内容?

我选择了另一种方法来解决我的问题。

我没有绘制矩形,而是构建了一个包含一列和一个单元格的 table。

设置cell的高度,使table绘制的矩形足够大,table的witdh设置得足够大

最后,我在右边添加了一个水平对齐。

val table = Table(1)
val cell = Cell(1,1)
cell.add("Name, date and signature :")
cell.height = 75f
table.setWidth(200f)
table.addCell(cell)
table.setHorizontalAlignment(HorizontalAlignment.RIGHT)
document.add(table)