
テキストボックスの文字について、テキストボックス上付き文字、下付き文字、化学式といった文字の描画フォーマットを指定します。
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 -- 完了 --
