10.4.1 Separation Colorの対応

AddTextSetSeparationColor_Top

狙い・効果

セパレーション色空間色を指定 PDFに文字を挿入する際にセパレーション色空間を用いて色を指定します。

処理の概要

『PDF Tool API』上で色指定をする際にセパレーション色空間(Separation Color Space)を用いて色を指定できます。

セパレーション色空間とは単色で色を表す特殊な版に用いられる色の定義です。例えば、カラー印刷をする際にシアンの版、イエローの版、マゼンタの版、黒の版の4回に分けて1つの印刷物を刷るなどの際に用いられます。

実際に『PDF Tool API』で色指定をする際には、①PtlColorSpaceSeparationの初期化の際に単色の名前とCMYK値を指定します。②tint値と一緒にPtlColorSeparationを初期化し、実際に挿入する色を決定します。tint値は0.0から1.0までの色調を表す値で、0.0がその色で達成可能な最も明るい色、1.0がその色で達成可能な最も暗い色です。

サンプルプログラムでは、入力PDFに指定した色のサンプルテキストを印字します。色指定の際には色の名前、CMYKのそれぞれの値、tint値を引数で指定します。なお、文字色が確認しやすいよう、フォントをMS ゴシック、フォントサイズを36ポイントで太字に指定しています。

『PDF Tool API』の主な機能

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class AddTextSetSeparationColor {
    // そのクラスのusageを表示する関数
    private static void printUsage() {
        System.out.println("usage: java AddTextSetSeparationColor in-pdf-file out-pdf-file"
                         + " color-name value-c value-m value-y value-k tint");
     }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 8) {
            printUsage();
            return;
        }

        String colName = args[2];
        float valueC = Float.parseFloat(args[3]);
        float valueM = Float.parseFloat(args[4]);
        float valueY = Float.parseFloat(args[5]);
        float valueK = Float.parseFloat(args[6]);
        float tint = Float.parseFloat(args[7]);

        try (PtlParamInput inputFile = new PtlParamInput(args[0]);
             PtlParamOutput outputFile = new PtlParamOutput(args[1]);
             PtlPDFDocument doc = new PtlPDFDocument()) {
            // PDFファイルをロードします。
            doc.load(inputFile);

            try (PtlPages pages = doc.getPages()) {//ページコンテナの取得
                // ページコンテナが空かどうか
                if (pages.isEmpty()) {
                    System.err.println("ページコンテナが空");
                    return;
                }

                try (PtlPage page = pages.get(0); // ページの取得(先頭ページを取得)
                     PtlContent content = page.getContent(); // ページコンテントの取得
                     PtlRect outputRect = page.getViewBox(); // 出力矩形の設定。(ページの大きさを得るためにViewBoxを取得する)
                     PtlParamFont font = new PtlParamFont("MS ゴシック", 36, true, false, true); // 出力テキストのフォント
                     PtlParamWriteString writeStringParam = new PtlParamWriteString(); // 文字描画のパラメータクラス
                     // 色表現用のクラスを作成
                     PtlColorSpaceSeparation colorSpace = new PtlColorSpaceSeparation(colName, 
                                                                                    valueC, valueM,valueY,valueK);
                     PtlColorSeparation colSeparation = new PtlColorSeparation(colorSpace , tint)) {// セパレーション色を表現したクラス
                    //文字の色指定
                    writeStringParam.setTextColor(colSeparation);

                    //フォントの指定(文字色を確認しやすくするため大きく描画する)
                    writeStringParam.setFont(font);
                    // 文字列出力 (中央に文字列を作成)
                    content.writeString(outputRect, PtlContent.ALIGN.ALIGN_CENTER,
                                        "writeString Test : set color", writeStringParam);
                }
            }

            // ファイルに保存します。
            doc.save(outputFile);
        }
	...【GetPDFVersion.javaと同じ処理のため省略
	   ・エラーメッセージ処理と出力】...
    }
}

プログラムファイル名

AddTextSetSeparationColor.java

入出力操作の例

C:\samples>java cookbook.AddTextSetSeparationColor 
usage: java AddTextSetSeparationColor in-pdf-file out-pdf-file color-name value-c value-m value-y value-k tint

C:\samples>java cookbook.AddTextSetSeparationColor blankPage_white.pdf Output_AddTextSetSeparationColor.pdf     cyan 1.0 0.0 0.0 0.0 0.5  
-- 完了 --

この操作例では文字色のCMYKを[1.0, 0.0, 0.0, 0.0]、Tint値を[0.5]、色名を「cyan」に設定したテキストを挿入しています。(書籍版PDF CookBook 第5巻はモノクロ印刷で出版されています。操作例の色を確認したい場合は『PDF Tool API』をお手元で実行するか、Web版のCookBookを参照してください。Web版のPDF CookBookはアンテナハウス株式会社のWebサイトにあります)

5-10-4-1_AddTextSetSeparationColor

図10.5 Separation Colorを使って文字色を設定した例