Itext7 Canvas将文本设置为右边框

时间:2017-12-09 22:16:39

标签: canvas itext

我在我的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();

1 个答案:

答案 0 :(得分:2)

如果您使用beginText(),则表示您正在将PDF运算符直接写入内容流。例如:BT endText() ET moveText() 。没有PDF运算符可以显示与一侧或另一侧对齐的文本。使用showText(),您移动到坐标,PdfCanvas开始从左到右书写该坐标中的文本。

如果你坚持使用PdfCanvas(除了Canvas之外什么都没有),你需要在使用7pt Helvetica时计算文本的长度。你必须做数学来计算文本应该从哪里开始。

如果您可以让iText执行数学运算,则应该从PdfCanvas和您已经拥有的PdfDocument创建一个Rectangle rectangle = new Rectangle(x, y, w, h); Canvas canvas = new Canvas(pdfCanvas, pdf, rectangle); 对象。

Paragraph

现在,您可以使用要添加的文本创建Paragraph p = new Paragraph() .add("text").setTextAlignment(TextAlignment.RIGHT); canvas.add(p); canvas.close(); ,然后可以定义文档的对齐方式:

onPause();
onSaveInstanceState();
onStop();
onDestroy();

onCreate();
onStart();
onResume();

在这种情况下,iText将执行所有计算以补偿有限的PDF运算符集。