2017-12-09 3 views
2

Ich benutze Itext7 in meinem Java-Projekt, um das PDF-Formular zu füllen. Gibt es eine Möglichkeit, die Texterweiterung in Canvas von der absoluten Position nach links zu setzen? Zum Beispiel setze ich den Text auf die rechte obere Ecke und dehnt ihn bis zur linken oberen Ecke aus, je länger ich seine Länge verlängere. Wie ich bereits erwähnt habe, verwende ich Leinwand.Itext7 Leinwand Text auf rechten Rand setzen

Beispiel für das Hinzufügen von Text

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

Antwort

2

Wenn Sie PdfCanvas verwenden, können Sie PDF-Betreiber direkt auf den Content-Stream schreiben. Zum Beispiel: beginText() schreibt BT und endText() schreibt ET. Es gibt keinen PDF-Operator, um Text an der einen oder anderen Seite anzuzeigen. Mit moveText() bewegen Sie sich zu einer Koordinate und showText() fängt an, den Text von dieser Koordinate von links nach rechts zu schreiben. Wenn Sie darauf bestehen, PdfCanvas (und nichts als PdfCanvas) zu verwenden, müssen Sie die Länge des Textes berechnen, wenn Sie 7pt Helvetica verwenden. Und Sie müssen die Mathematik tun, um zu berechnen, wo der Text beginnen soll.

Wenn es für Sie in Ordnung ist, iText das Math ausführen zu lassen, sollten Sie ein Canvas Objekt aus dem PdfCanvas und dem PdfDocument erstellen, das Sie bereits haben.

Rectangle rectangle = new Rectangle(x, y, w, h); 
Canvas canvas = new Canvas(pdfCanvas, pdf, rectangle); 

Jetzt können Sie ein Paragraph mit dem Text erstellen, die Sie hinzufügen möchten, und Sie können die Ausrichtung für das Dokument definieren:

Paragraph p = new Paragraph() 
    .add("text").setTextAlignment(TextAlignment.RIGHT); 
canvas.add(p); 
canvas.close(); 

In diesem Fall wird iText alles tun, um die Berechnungen zu kompensieren für die begrenzte Anzahl von PDF-Operatoren.

Verwandte Themen