PDFライブラリiTextを使う2

昨日の続き

改ページが自動で行われると嫌な場合は段組テキスト表示用のColumnTextを使うといいみたい。自動的に右端で改行をしてくれて、与えられた領域内でテキストが収まりきらないときはColumnText.go()の戻り値で検出できる。溢れたテキストは任意のColumnTextに続けて表示させることも可能な優れもの。

ColumnText ct = new ColumnText(pcb);
ct.setSimpleColumn(50, 50, 400, 800, 11.5f, Element.__Value.ALIGN_LEFT);

ct.addText(new Paragraph(strMainText, font_main));
if( ColumnText.NO_MORE_COLUMN == ct.go() ) {
    Console.Write("溢れてます");
}

ちなみにColumnTextといいながら、addElement()で画像などのオブジェクトも追加可能な模様。しかしaddElement()で画像を追加すると何故かそれ以降テキストを追加しても表示されない・・・というわけで画像の追加だけはPdfContentByte.addImage()で対応することにした。

// ColumnTextの最下部のY座標を取得し、画像の絶対位置を指定
img.setAbsolutePosition(58, ct.getYLine() - img.scaledHeight()); 
pcb.addImage(img);
ct.setYLine( ct.getYLine() - img.scaledHeight() + 10 );


iText.NETの作者の氏原氏は本家ドキュメントの日本語化もなされていて超有用
http://www.ujihara.jp/iTextdotNET/ja/tutorial/index.html
まだまだ高度な機能がてんこ盛りでとてもじゃないけど試しきれない。とりあえず自分の目的は達したから後からゆっくり実験してみよう。