2017-12-09 11 views
2

私のJavaプロジェクトでItext7を使用してPDFフォームに入力しています。絶対位置から左にキャンバス内のテキスト拡張を設定する方法はありますか?たとえば、テキストを右上隅に設定し、長さを長くするほど左上隅に伸びます。前にも触れましたが、私はキャンバスを使用します。あなたがPdfCanvasを使用する場合は、ストレートコンテンツストリームにPDF演算子を書いているテキストItext7 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(); 

答えて

2

を追加する

例。例えば、beginText()は、BTendText()と書きます。ETと書きます。 PDFの演算子は、テキストを一方または他方に並べて表示するものではありません。 moveText()を使用すると、座標に移動し、showText()はその座標から左から右にテキストの書き込みを開始します。

PdfCanvas(何もPdfCanvas以外)を使用することを主張する場合、7pt Helveticaを使用する場合、テキストの長さを計算する必要があります。そして、テキストをどこから始めるべきかを計算するために、数学をやらなければなりません。

iTextにMathを実行させても問題ない場合は、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オペレータの限られたセットのために。

関連する問題