作成した PDF へのリンク ビルド用バッチファイルprompt java$G setlocal set PATH=C:\Program Files\Java\jdk1.6.0_24\bin;%PATH% set CLASSPATH=.;itextpdf-5.4.3.jar javac Main.java endlocal実行用バッチファイルprompt java$G setlocal set PATH=C:\Program Files\Java\jdk1.6.0_24\bin;%PATH% set CLASSPATH=.;itextpdf-5.4.3.jar REM 実行 java Main endlocaliText ダウンロード iText メインページ iText ドキュメント iText サンプルページ ダウンロードした itextpdf-5.4.3.jar は、テストコードと同じディレクトリに置いて、JDK のインストール先(ここでは C:\Program Files\Java\jdk1.6.0_24)を書き換えてビルドすれば、実行後 pdftest.pdf が作成されます。
// http://api.itextpdf.com/itext/index.html?com/itextpdf/text/pdf/ColumnText.html import com.itextpdf.text.*; import com.itextpdf.text.pdf.*; import com.itextpdf.text.pdf.draw.*; import java.io.FileOutputStream; public class Main { // ***************************************************** // エントリポイント // ***************************************************** public static void main(String[] args) { Main thisClass = new Main(); } // ***************************************************** // コンストラクタ // ***************************************************** public Main() { super(); my_acton(); } // ***************************************************** // 初期処理 // ***************************************************** private void my_acton() { System.out.println("処理開始"); String pdf = "pdftest.pdf"; Document doc = new Document(); try { // 出力先を指定し、文書をPDFとして出力 PdfWriter pw = PdfWriter.getInstance(doc, new FileOutputStream(pdf)); // 出力開始 doc.open(); // 日本語フォントの設定 // メイリオ Font font = new Font( BaseFont.createFont( "C:\\WINDOWS\\Fonts\\meiryo.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED)); // メイリオボールド Font font2 = new Font( BaseFont.createFont( "C:\\WINDOWS\\Fonts\\meiryob.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED)); // ***************************************************************** // 座標指定する為のオブジェクト // ***************************************************************** // 一番上のレイヤー PdfContentByte pcb = pw.getDirectContent(); // 一番上のレイヤーに直線を引く pcb.moveTo( 0, 820 ); pcb.lineTo( 595, 820 ); pcb.stroke(); ColumnText ct = new ColumnText(pcb); Phrase myText = null; String line_text = null; int x1 = 400; int x2 = 595; line_text = "1234567890123456789012345678901234567890"; myText = new Phrase(line_text,font); ct.setSimpleColumn( myText, x1,0, // 書き込み対象の左下の座標 x2, 810, // 書き込み対象の右上の座標 20, // 行間 Element.ALIGN_LEFT ); ct.go(); line_text = "ニ行目"; myText = new Phrase(line_text,font); ct.setSimpleColumn( myText, x1,0, x2, 750, 0, Element.ALIGN_LEFT ); ct.go(); line_text = "三行目"; myText = new Phrase(line_text,font); ct.setSimpleColumn( myText, x1,0, x2, 735, 0, Element.ALIGN_LEFT ); ct.go(); line_text = "四行目"; // ***************************************************************** // 右寄せ // ***************************************************************** int right_offset = 50; myText = new Phrase(line_text,font); ct.setSimpleColumn( myText, x1,0, x2-right_offset, 720, 0, Element.ALIGN_LEFT ); ct.go(); int top = 700; myText = new Phrase("left:"+doc.getPageSize().getLeft(),font2); ct.setSimpleColumn( myText, x1, 0, x2-right_offset, top, 0, Element.ALIGN_RIGHT ); ct.go(); top -= 10; myText = new Phrase("right:"+doc.getPageSize().getRight(),font2); ct.setSimpleColumn( myText, x1, 0, x2-right_offset, top, 0, Element.ALIGN_RIGHT ); ct.go(); top -= 10; myText = new Phrase("top:"+doc.getPageSize().getTop(),font2); ct.setSimpleColumn( myText, x1,0, x2-right_offset, top, 0, Element.ALIGN_RIGHT ); ct.go(); top -= 10; myText = new Phrase("bottom:"+doc.getPageSize().getBottom(),font2); ct.setSimpleColumn( myText, x1,0, x2-right_offset, top, 0, Element.ALIGN_RIGHT ); ct.go(); // ***************************************************************** // 真ん中のレイヤー( 通常の文字列や画像・グラフィックの追加 ) // ***************************************************************** Image img = Image.getInstance("_img.jpg"); img.setAbsolutePosition(140, 620); img.scalePercent(50); doc.add(img); doc.add( new Paragraph(" ", font) ); // 改行 doc.add( new Paragraph(" ", font) ); doc.add( new Paragraph(" ", font) ); doc.add( new Paragraph(" ", font) ); doc.add( new Paragraph(" ", font) ); doc.add( new Paragraph("文を 一行出力", font) ); doc.add( new Paragraph("文を 一行出力", font) ); doc.add( new Paragraph("文を 一行出力", font) ); doc.add( new Paragraph("文を 一行出力", font) ); doc.add( new Paragraph("文を 一行出力", font) ); doc.add( new Paragraph(" ", font) ); Paragraph p = new Paragraph(); for (int i = 0; i < 25; i++) { p.add( new Chunk( "日本語表示の一般テキストを繰り返し表示しています。" ,font ) ); } doc.add(p); // 出力終了 doc.close(); } catch (Exception e) { e.printStackTrace(); } System.out.println("処理終了"); } }
メイリオについて meiryo.ttc,0 を meiryo.ttc,1 にすればメイリオイタリックになります。(ボールドのほうも同様です) レイヤーについて レイヤーはもう一枚、一番下にありますが通常の文書では必要無いと思います。 setSimpleColumn について 矩形を指定しますが、開始が左下隅で、終了が右上隅になります。6番目の引数は行間を示し、矩形からあふれるばあいに使用される行間です。 ページのサイズ について 真ん中のレイヤーである、Document に対して以下のメソッドを実行して取得しています getPageSize().getLeft() getPageSize().getRight() getPageSize().getTop() getPageSize().getBottom() Document 内の改行について doc.add( new Paragraph(" ", font) ); で改行します( スペースを出力します ) 一般的な出力について 単純なテキスト印刷の場合であれば、Document のみで問題無いと思いますが、文書としてのフォーマットを固定部分として定義して、中身にテキストを出力するように場合、getDirectContent を使って取得した PdfContentByte を使って出力すると良いと思います。もう一枚のレイヤーは、さらに背景にバリエーションを与える必要がある場合に使用するといいと思います。( getDirectContentUnder() で取得します )
|
【Javaの最新記事】
- Java : Apache POI で最低限の処理を標準化( ここではワークブックは新規作成 )
- Java で JSON 文字列を オブジェクトに変換する Google Gson の基本 4 パターン
- Java のコンソールで NAVER の RSS を取得して、title 部分を正規表現で加工して表示するサンプル
- Eclipse で、文字列内のファイルのパスの \ 記号を \\ にする方法
- Java : Google gson 2.3.1 で JSON 文字列を定義済みのクラスを使ってオブジェクト化
- Java : Google gson 2.3.1 で、JSON 文字列のフォーマットが解らなくてもなんとかなる『ベタ』な処理方法
- Eclipse のホバーで追加したライブラリの javadoc を表示させる手順
- Eclipse+WindowBuilder : DBアプリケーション(社員マスタメンテ)の更新(データ修正)処理
- Eclipse+WindowBuilder : DBアプリケーション(社員マスタメンテ)の入力チェック
- Eclipse+WindowBuilder : DBアプリケーション(社員マスタメンテ)の二会話画面制御
- Eclipse+WindowBuilder : DBアプリケーション(社員マスタメンテ)でDBからSELECT構文で行データを読み出す
- Eclipse+WindowBuilder : ボタンイベント(AbstractAction) の作成
- Eclipse+WindowBuilder : データベースアプリケーション(社員マスタメンテ)の画面作成
- Eclipse + WindowBuilder : JDBC と ODBC を使った、オールマイティなデータベース接続サンプル( MySQL / SQLServer / Oracle / Postgr..
- Eclipse + WindowBuilder : Design タブが表示されなくなった時の対処
- Eclipse のパンくずリスト(breadcrumb) をワークスペースの設定ファイルで非表示にする
- Java : Eclipse 実行の System.in.read(buff) でコンソール入力
- SQL 文へのデータバインド用 public class GetSQL
- ADT( Android Development Tools ) Eclipse に Window Builder をインストールして Swing アプリケーションを作成する(2)
- Java : Windows の環境変数の列挙( 含ソート )