
透かしの文字列にフォント属性を指定します。
透かしの文字列に指定できるフォント属性は次のとおりです。
| 列挙型定数 | 説明 |
|---|---|
| WEIGHT_BOLD | ボールド |
| WEIGHT_EXTRABOLD | エクストラボールド |
| WEIGHT_EXTRALIGHT | エクストラライト |
| WEIGHT_HEAVY | ヘビー |
| WEIGHT_LIGHT | ライト |
| WEIGHT_MEDIUM | ミディアム |
| WEIGHT_NORMAL | ノーマル |
| WEIGHT_SEMIBOLD | セミボールド |
本プログラムでは、このうちのフォントファミリー名・フォントのサイズ・イタリックの指定・フォントウェイトの指定を設定します。PtlParamFontの各要素はメソッドではなく初期化の際に指定しています。フォント埋め込みの有無については次項の2.2.6 フォントの埋め込み設定を参照してください。
package cookbook;
import jp.co.antenna.ptl.*;
public class TextWaterMarkSetFont {
// そのクラスのusageを表示する関数
public static void printUsage() {
System.out.print("usage: java TextWaterMarkSetFont in-pdf-file out-pdf-file");
System.out.println(" font-family font-size set-italic set-weight");
System.out.println("set-italic : ");
System.out.println("0:字体をイタリックにしない 1:イタリックにする");
System.out.println("set-weight : ");
System.out.println("PtlParamFont.WEIGHTに含まれる名前で指定してください。");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
if (args.length < 6) {
printUsage(); // usageメッセージの表示
return;
}
// コマンドライン引数の読み取り
String fontFamily = args[2];
float fontSize = Float.parseFloat(args[3]);
boolean setItalic = false;
try {
setItalic = readBoolArgs(args[4], "set-italicは 0か1で指定してください。");
}
catch (IllegalArgumentException ex) {
System.out.println(ex.getMessage());
printUsage(); // usageメッセージの表示
return;
}
String fontWeight = args[5];
...【WaterMarkSetMargin.javaと同じ処理のため省略
・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード
・PtlParamOutputを用いて出力PDF名を指定】...
// 透かしの追加
appendTextWaterMarkSetFont(doc, fontFamily, fontSize, setItalic, fontWeight);
...【EncryptWithUserPass.javaと同じ処理のため省略
・PtlParamOutputを用いてPtlPDFDocument docの内容を出力
・PtlException, Exception, Error を catchするエラー処理
・finally文で"--完了--"と表示する処理】...
}
public static void appendTextWaterMarkSetFont(PtlPDFDocument doc, String fontFamily,
float fontSize, boolean setItalic,
String fontWeight)
throws PtlException, Exception, Error {
try (PtlParamWaterMarkText waterMarkText = new PtlParamWaterMarkText()) {
// 透かしに指定するフォントの設定
try (PtlParamFont font = new PtlParamFont(fontFamily, fontSize,
PtlParamFont.WEIGHT.valueOf(fontWeight),
setItalic, true)) {
waterMarkText.setFont(font);
}
catch (IllegalArgumentException ex){//PtlParamFont.WEIGHTに無いフォントを指定した場合
System.out.println(ex.getMessage());
System.out.print("ERROR : set-weightには");
System.out.println("PtlParamFont.WEIGHTに含まれる名前を指定してください。");
ex.printStackTrace();
}
...【WaterMarkSetRect.javaのappendWaterMarkSetRect()と同じ処理のため省略。
配置位置はWaterMarkSetPageRange.javaのappendWaterMarkSetPageRange()のものを共通とする。
・フォント以外の、テスト用テキスト透かしに共通の設定をセットする。
・設定項目:配置位置・名前・Zオーダー・ページ範囲・不透明度・文字列・
タイリング・フォント・文字の色・縁取りの色・対角線配置の有無・配置角度
・PtlPDFDocument docにテキスト透かしを設定する】...
}
}
...【readBoolArgs()の処理はWaterMarkSetPageRange.javaと共通のため省略。
・0 または1 を入力されたargs により、true またはfalse を返すメソッド。
・argsが0か1でなかった場合に出力されるエラーメッセージを指定する。】...
}
TextWaterMarkSetFont.java

次図は上が「Arial Rounded MT Bold」フォントの24ポイント、ウェイトはライトを指定、下が「Arial Bold」フォントの36ポイント、ウェイトはノーマル指定です。
