2.1.2 フォントの設定

images/AddTextSetFont-top.png

狙い・効果

PDFに書き込む文字列のフォント属性を指定します。

処理の概要

書き込み先PDF文書とそのページ位置、配置矩形、配置基準、書き込みしたい文字列の指定方法は「2.1.1 本文テキストの追加」を参照してください。

文字列に指定できるフォント属性は次のとおりです。

  1. フォントファミリー名
  2. フォントのサイズ―文字の大きさをポイントで指定します。
  3. フォント埋め込みの有無
  4. イタリックの指定
  5. フォントウエイトの指定―次表の列挙パラメータで指定します。
表2・2 フォントウエイトのパラメータ
パラメータ
説明
WEIGHT_EXTRALIGHT
エクストラライト
WEIGHT_LIGHT
ライト
WEIGHT_NORMAL
ノーマル
WEIGHT_MEDIUM
ミディアム
WEIGHT_SEMIBOLD
セミボールド
WEIGHT_BOLD
ボールド
WEIGHT_EXTRABOLD
エクストラボールド
WEIGHT_HEAVY
ヘビー

『PDF Tool API』の主な機能

この例では主に次の機能を使っています。

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class AddTextSetFont {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 7)
        {
            System.out.println("usage: java AddTextSetFont in-pdf-file out-pdf-file font-family font-size set-embed set-italic set-weight");
            System.out.println("set-embed, set-italicは trueかfalseで指定してください。");
            return;
        }
        String fontFamily = args[2];
        float fontSize = Float.parseFloat(args[3]);
        String setEmbed = args[4];
        boolean embedOrNot;
        String setItalic = args[5];
        boolean italicOrNot;
        String fontWeight = args[6];

        //setEmbedの判定
        switch(setEmbed)
        {
        case "true":
            embedOrNot = true;
            break;
        case "false":
            embedOrNot = false;
            break;
        default:
            System.err.println("set-embedは trueかfalseで指定してください。");
            return;
        }

        //setItalicの判定
        switch(setItalic)
        {
        case "true":
            italicOrNot = true;
            break;
        case "false":
            italicOrNot = false;
            break;
        default:
            System.err.println("set-italicは trueかfalseで指定してください。");
            return;
        }


        ...【AppendPages.javaと同じ処理のため省略
             ・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード
             ・PtlParamOutputを用いて出力PDF名を指定】...


        ...【RemovePages.javaと同じ処理のため省略
             ・doc.getPages()メソッドを用いてPtlPages pagesにページコンテナを取得
             ・ページコンテナが空だった場合にエラーを出力して終了】...


                try (PtlPage page = pages.get(0); // ページの取得(先頭ページを取得)
                     PtlContent content = page.getContent(); // ページコンテントの取得
                     PtlRect outputRect = page.getViewBox(); // 出力矩形の設定。(ページの大きさを得るためにViewBoxを取得する)
                     PtlParamWriteString writeStringParam = new PtlParamWriteString(); // 文字描画のパラメータクラス。
                     PtlParamFont font = new PtlParamFont()) //フォント指定に使うパラメータクラス
                {
                    // フォントの設定
                    // フォントファミリー名
                    font.setName(fontFamily);
                    // フォントのサイズ(ポイント)
                    font.setSize(fontSize);
                    // フォント埋め込みの可否
                    font.setEmbed(embedOrNot);
                    // イタリックか否か
                    font.setItalic(italicOrNot);
                    // フォントウエイト
                    try{
                        font.setWeight(PtlParamFont.WEIGHT.valueOf(fontWeight));
                    }catch (IllegalArgumentException ex){//PtlParamFont.WEIGHTの指定が誤っていた場合のエラーメッセージ
                        System.out.println(ex.getMessage());
                        System.out.println("ERROR : set-weightにはPtlParamFont.WEIGHTに含まれる名前を指定してください。");
                        ex.printStackTrace();
                    }
                    // フォントをパラメータクラスへ設定
                    writeStringParam.setFont(font);

                    // 文字列出力 (中央に文字列を作成)
                    content.writeString(outputRect, PtlContent.ALIGN.ALIGN_CENTER,
                                        "writeString Test : Set Font", writeStringParam);
                }
            }


        ...【AppendPages.javaと同じ処理のため省略
             ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力
             ・PtlException, Exception, Error を catchするエラー処理
             ・finally文で"--完了--"と表示する処理】...

    }
}

サンプルファイル名

AddTextSetFont.java

入出力操作の例

C:\samples>java cookbook.AddTextSetFont 
usage: java AddTextSetFont in-pdf-file out-pdf-file font-family font-size set-embed set-italic set-weight
set-embed, set-italicは trueかfalseで指定してください。

C:\samples>java cookbook.AddTextSetFont blankPage.pdf addTextfont.pdf "Century Gothic" 24 true false WEIGHT_HEAVY 
-- 完了 --

この例ではフォントにCentury Gothic、フォントサイズは24ポイント、フォントの埋め込み「あり」を指定しています。

images/AddTextSetFont-example.png

図2・2 フォント(Century Cothic)24ポイントを指定した例