Canvas Itext7画布将文本设置为右边框

Canvas Itext7画布将文本设置为右边框,canvas,itext,Canvas,Itext,我在java项目中使用Itext7来填充pdf表单。有没有办法将画布中的文本扩展设置为从绝对位置向左?例如,我将文本设置为右上角,随着长度的增加,文本会延伸到左上角。正如我前面提到的,我使用画布 添加文本的示例 PdfDocument document = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest)); PdfCanvas canvas1 = new PdfCanvas(document.getPage(1));

我在java项目中使用Itext7来填充pdf表单。有没有办法将画布中的文本扩展设置为从绝对位置向左?例如,我将文本设置为右上角,随着长度的增加,文本会延伸到左上角。正如我前面提到的,我使用画布

添加文本的示例

PdfDocument document = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest));


    PdfCanvas canvas1 = new PdfCanvas(document.getPage(1));
    canvas1.beginText().setFontAndSize(PdfFontFactory.createFont(FontConstants.HELVETICA), 7)
            .moveText(500, 592.5)
            .showText(new SimpleDateFormat("dd/MM/YYYY").format(invoice.getDate()))
            .endText();

如果使用
PdfCanvas
,则直接将PDF运算符写入内容流。例如:
beginText()
写入
BT
endText()
写入
ET
。没有PDF操作符来显示与一侧或另一侧对齐的文本。使用
moveText()
,移动到一个坐标,然后
showText()
开始从该坐标从左到右写入文本

如果您坚持使用
PdfCanvas
(除了
PdfCanvas
),您需要在使用7pt Helvetica时计算文本长度。你必须做数学运算来计算文本应该从哪里开始

如果可以让iText进行计算,则应该从
PdfCanvas
和已有的
PdfDocument
创建一个
Canvas
对象

Rectangle rectangle = new Rectangle(x, y, w, h);
Canvas canvas = new Canvas(pdfCanvas, pdf, rectangle);
现在,您可以使用要添加的文本创建一个
段落
,并且可以定义文档的对齐方式:

Paragraph p = new Paragraph()
    .add("text").setTextAlignment(TextAlignment.RIGHT);
canvas.add(p);
canvas.close();
在这种情况下,iText将执行所有计算以补偿有限的PDF运算符集