透かしの文字列にフォント属性を指定します。
透かしの文字列に指定できるフォント属性は次のとおりです。
列挙型定数 | 説明 |
---|---|
WEIGHT_BOLD | ボールド |
WEIGHT_EXTRABOLD | エクストラボールド |
WEIGHT_EXTRALIGHT | エクストラライト |
WEIGHT_HEAVY | ヘビー |
WEIGHT_LIGHT | ライト |
WEIGHT_MEDIUM | ミディアム |
WEIGHT_NORMAL | ノーマル |
WEIGHT_SEMIBOLD | セミボールド |
本プログラムでは、このうちのフォントファミリー名・フォントのサイズ・イタリックの指定・フォントウェイトの指定を設定します。フォント埋め込みの有無については次項の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ポイント、ウェイトはノーマル指定です。