2.1.5 描画テキストの不透明度

images/AddTextSetOpacity-top.png

狙い・効果

描画する文字の不透明度を指定文字(テキスト)の不透明度を指定します。不透明度を0.0にすると指定の位置に透明なテキストを挿入できます。

処理の概要

描画するテキストの不透明度を0.0 〜 1.0の数値で指定します。不透明度0.0(透明)ではPDFに透明なテキストを挿入します。PDFの透明テキストは目には見えませんが、文字列検索やテキスト抽出の対象となります。そこで、例えば、PDFを提供した相手についての情報を透明テキストで埋め込んでおけば、相手に気が付かれることなく情報を埋め込めます。万一PDFが情報漏洩した時に、埋め込んだ情報を使えば、そのPDFを渡した相手を特定できます。

『PDF Tool API』の主な機能

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class AddTextSetOpacity {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 2) {
            System.out.println("usage: java AddTextSetOpacity in-pdf-file out-pdf-file opacity");
            return;
        }

        float opacity = Float.parseFloat(args[2]);
        if((opacity < 0) || (1.0f < opacity)) {
            System.err.println("0.0から1.0の範囲で値を設定し直してください。");
            return;
        }
        String outputText = String.format("writeString Test : set Opacity as %.1f", opacity);

        ...【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()) { // 文字描画のパラメータクラス
                    // Opacityをパラメータクラスへ設定
                    writeStringParam.setOpacity(opacity);
                    // 文字列出力 (中央に文字列を作成)
                    content.writeString(outputRect, PtlContent.ALIGN.ALIGN_CENTER,
                                        outputText, writeStringParam);
                }
            }

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

    }
}

サンプルファイル名

AddTextSetOpacity.java

入出力操作の例

C:\samples>java cookbook.AddTextSetOpacity 
usage: java AddTextSetOpacity in-pdf-file out-pdf-file opacity

C:\samples>java cookbook.AddTextSetOpacity blankPage.pdf addTextSetOpacity.pdf 0.4 
-- 完了 --

images/AddTextSetOpacity-compare.png

図2・5 比較:不透明度を変えて出力した例