11

ユーザーが写真をアップロードしてフォトブックを作成する Web サイトを持っています。また、絶対位置、回転、配置にテキストを追加することもできます。テキストには改行を含めることができます。

Itext ライブラリを使用して、後で印刷されるフォトブックの高品質 Pdfs の作成を自動化しています。

ユーザーがアップロードした画像を PDF に追加するのは非常に簡単で、テキストを追加しようとすると問題が発生します。

理論的には、幅と高さが定義された段落を定義し、ユーザーのテキスト、フォント、フォント スタイル、配置 (中央、左、右、両端揃え) を設定し、最後に回転を設定する必要があります。

Itext について読んだことについては、ユーザー プロパティを設定する段落を作成し、ColumnText オブジェクトを使用して絶対位置、幅、高さを設定できます。ただし、単一の線よりも大きなものの回転を設定することはできません。

回転方法では 90 の倍数の角度しか許可されないため、表のセルも使用できません。

ColumnText.showTextAligned()メソッドと関連するすべての数学を使用して行ごとにテキストを追加することなく、いくつかの回転 (たとえば 20 度) で段落を追加する方法はありますか?

----編集:2013年8月8日----

それが誰かを助けるなら、これは私がこの問題を解決するために使用したコードです(Brunoに感謝します):

//Create the template that will contain the text
PdfContentByte canvas = pdfWriter.getDirectContent();
PdfTemplate textTemplate = canvas.createTemplate(imgWidth, imgHeight); //The width and height of the text to be inserted

ColumnText columnText = new ColumnText(textTemplate);

columnText.setSimpleColumn(0, 0, imgWidth, imgHeight);
columnText.addElement(paragraph);

columnText.go();

//Create de image wraper for the template
Image textImg = Image.getInstance(textTemplate);

//Asign the dimentions of the image, in this case, the text
textImg.setInterpolation(true);
textImg.scaleAbsolute(imgWidth, imgHeight);
textImg.setRotationDegrees((float) -textComp.getRotation()); //Arbitrary number of degress
textImg.setAbsolutePosition(imgXPos, imgYPos);

//Add the text to the pdf
pdfDocument.add(textImg);
4

2 に答える 2

10
  • PdfTemplateオブジェクトを作成します。ただの長方形。
  • ColumnTextこれにあなたを描いてくださいPdfTemplate。回転について心配する必要はありません。列に追加したいコンテンツで四角形を埋めるだけです。
  • オブジェクトのPdfTemplate内側をラップします。Imageこれは計算を避けるための便宜上のものです。これは、テキストがラスタライズされるという意味ではありません。
  • に回転と絶対位置を適用Imageし、ドキュメントに追加します。

あなたの問題は解決しました;-)

PS: 私は iText in Action 本の著者です。

于 2013-03-15T06:35:07.637 に答える