canvas - Itext7 Canvas 将文本设置为右边框

标签 canvas itext

我在我的java项目中使用Itext7来填写pdf表单。有什么方法可以将 Canvas 中的文本扩展设置为从绝对位置向左吗?例如,我将文本设置为右上角,并且随着我增加其长度,它会延伸到左上角。正如我之前提到的,我使用 Canvas 。

添加文本的示例

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() 写入 BTendText() 写入 ET。没有 PDF 运算符可以显示与一侧或另一侧对齐的文本。使用 moveText(),您可以移动到某个坐标,然后 showText() 开始从该坐标从左到右写入文本。

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

如果您可以让 iText 进行数学运算,则应该从您已经创建的 PdfCanvasPdfDocument 创建一个 Canvas 对象有。

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();

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

关于canvas - Itext7 Canvas 将文本设置为右边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47733784/

相关文章:

javascript - Canvas 坐标错误的 drawImage()

java - 为什么 gc.clearRect 不会清除 Canvas ?

javascript - 虚线错误

java - 使用 iText java 选择整个 pdf 文档的文本和背景

pdf - 创建 PDF/A-3 : Embedded file shall contain valid Params key

java - 使用 iText 计算 PDF 上的附件数量

Python Canvas 用鼠标tkinter移动项目

javascript - HTML5 Canvas 可调整大小的多边形

java - 如何增加itext Pdf中PdfPTable的宽度

c# - 如何在每个 x 步向文本模式添加 x 偏移量? (itext)