テキストボックスの文字について、テキストボックス上付き文字、下付き文字、化学式といった文字の描画フォーマットを指定します。
PtlParamWriteStringTextBoxでは上付き文字、下付き文字、化学式といった文字の描画フォーマットを設定できます。
具体的にはsetFormat()で指定し、表3.2の列挙型定数の中から描画フォーマットを選択します。
化学式フォーマットを選択した場合は、入力された文字のうち数字は自動的に下付きになります。また、アルファベットを含むその他の文字は通常の大きさになります。
サンプルプログラムでは、上付き文字、下付き文字、化学式を利用した文字列を指定した矩形に挿入します。文字列は固定です。その他の項目に関してはTBoxDrawTextBox.javaと同一の動作をします。
列挙型定数 | フォーマットタイプ |
---|---|
FORM_CHEM | 化学式 |
FORM_NORMAL | ノーマル(デフォルト) |
FORM_SUB | 下付き |
FORM_SUP | 上付き |
package cookbook; import java.io.*; import jp.co.antenna.ptl.*; public class TBoxDrawWithFormat{ // そのクラスのusageを表示する関数 private static void printUsage() { System.out.println("usage: java TBoxDrawWithFormat in-pdf-file out-pdf-file page-num"); } /** * @param args the command line arguments */ public static void main(String[] args) { if (args.length < 3) { printUsage(); return; } try (PtlParamInput inputFile = new PtlParamInput(args[0]); PtlParamOutput outputFile = new PtlParamOutput(args[1]); PtlPDFDocument doc = new PtlPDFDocument(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) { // PDFファイルをロードします。 doc.load(inputFile); // コマンドライン引数の読み取り・判定 int pageToAdd = Integer.parseInt(args[2]); int numPages = doc.getPageCount(); System.out.println("ページ数:" + numPages); if((numPages < 0)||(numPages < pageToAdd)) { System.err.println("テキスト挿入ページは全ページ数よりも小さい正の値を指定してください。"); return; } try (PtlPages pages = doc.getPages()) {//ページコンテナの取得 // ページコンテナが空かどうか if (pages.isEmpty()) { System.err.println("ページコンテナが空"); return; } try (PtlPage page = pages.get(pageToAdd - 1);// ページの取得(パラメータindexは0が先頭のため1を引く) PtlContent content = page.getContent();// ページコンテントの取得 PtlRect outputRect = new PtlRect();// 出力矩形の初期化 PtlTextBox textBox = content.drawTextBox(setRectCoordinate(br, outputRect), PtlContent.ALIGN.ALIGN_CENTER, 210, 297); PtlParamWriteStringTextBox paramFormat = new PtlParamWriteStringTextBox(); PtlParamWriteStringTextBox paramFormat_sup = new PtlParamWriteStringTextBox(); PtlParamWriteStringTextBox paramFormat_sub = new PtlParamWriteStringTextBox(); PtlParamWriteStringTextBox paramFormat_chem = new PtlParamWriteStringTextBox()) {// 文字描画のパラメータクラス。 paramFormat.setFormat(PtlParamWriteStringTextBox.FORMAT_TYPE.FORM_NORMAL); paramFormat_sup.setFormat(PtlParamWriteStringTextBox.FORMAT_TYPE.FORM_SUP); paramFormat_sub.setFormat(PtlParamWriteStringTextBox.FORMAT_TYPE.FORM_SUB); paramFormat_chem.setFormat(PtlParamWriteStringTextBox.FORMAT_TYPE.FORM_CHEM); // 文字列出力(上付き文字) textBox.writeString("これは上付き文字を使った表現です。", paramFormat); textBox.writeNL(); textBox.writeString("2", paramFormat); textBox.writeString("10", paramFormat_sup); textBox.writeString(" = 1024", paramFormat); textBox.writeNL(); textBox.writeString("Microsoft", paramFormat); textBox.writeString("Ⓡ", paramFormat_sup); // 文字列出力(下付き文字) textBox.writeNL(); textBox.writeNL(); textBox.writeString("これは下付き文字を使った表現です。", paramFormat); textBox.writeNL(); textBox.writeString("A", paramFormat); textBox.writeString("i", paramFormat_sub); textBox.writeString("+B", paramFormat); textBox.writeString("i", paramFormat_sub); textBox.writeString("=C", paramFormat); textBox.writeString("i", paramFormat_sub); // 文字列出力(化学式) textBox.writeNL(); textBox.writeNL(); textBox.writeString("これは化学式を使った表現です。", paramFormat); textBox.writeNL(); textBox.writeString("O2 + 2H2 →2H2O", paramFormat_chem); textBox.writeNL(); textBox.writeString("Na+ + Cl- → NaCl", paramFormat_chem); ex.printStackTrace(); } } // ファイルに保存します。 doc.save(outputFile); } ...【GetPDFVersion.javaと同じ処理のため省略 ・エラーメッセージ処理と出力】... } public static PtlRect setRectCoordinate(BufferedReader br, PtlRect outputRect) throws IOException, PtlException, Exception, Error { ...【TBoxDrawTextBox.javaと同じ処理のため省略 ・[top, bottom, left, right]を設定し、PtlRect型変数を返す関数】... } }
TBoxDrawWithFormat.java
C:\samples>java cookbook.TBoxDrawWithFormat usage: java TBoxDrawWithFormat in-pdf-file out-pdf-file page-num text-to-add text-align formatNum FormatNum 0: ノーマル 1: 化学式 2: 下付き 3: 上付き C:\samples>java cookbook.TBoxDrawWithFormat gray_landscape_A4blank.pdf Output_TBoxDrawWithFormat.pdf 1 ページ数:1 指定する矩形の各数値を入力してください。 top (mm) : 120 bottom (mm) : 80 left (mm) : 50 right (mm) : 130 -- 完了 --