この文書では、Acrobat 7.0 で PDF ページのテキスト領域を塗りつぶす方法について説明します。

注意:

この文書の内容は、Acrobat 7.0 が対象となっています。

Acrobat 8 以降では、墨消しツールを使用して機密情報の削除が行えます。詳しくは、以下のページをご確認ください。

Description (説明)

この技術文書は、以下の要件を満たす Acrobat プラグインの実装例について説明するものです。

  • テキスト選択領域を黒色の矩形で塗り潰して、テキストを隠す。

このプラグインの用途としては、PDF ドキュメントのセキュリティの適用方法として、文書内のテキストの一部を隠して公開する場合等が考えられます。
なお、セキュリティの適用範囲については更に検討を要しますので、「Additional Information(追加情報)」を併せて参照してください。

Solutions(解決方法)

PDFEdit APIを用いて、PDFドキュメントのページコンテンツを編集する必要があります。

このプラグインの処理としては、テキスト選択部分を取得して、選択領域について黒の四角形のオブジェクトを作成してページに追加するという手順を採用します。

  1. AVDocGetSelection() メソッドでテキスト選択領域を取得します。
  2. PDTextSelectEnumQuads() メソッドで、テキスト選択領域の個々の文字の表示領域 (quad) を列挙します。この時、表示領域(矩形)の座標が取得できます。
  3. PDEPathCreate() メソッドで矩形用のパスデータ (PDEPath) を生成し、PDEPathSetData()  メソッドで矩形の図形データ情報を設定します。
  4. PDEContentAddElem() メソッドでPDEPathオブジェクトをページコンテンツに追加して、PDPageSetPDEContent() メソッドでページコンテンツを更新します。

なお、PDEPath オブジェクトの追加では、オブジェクトが最前面に表示されるように追加します。これは、PDF の描画モデルが塗りつぶしを基本としているため、上書きするような動作イメージとなります。以下の図はそれを視覚的に説明するものです。

図1:PDEPath による塗りつぶし

以下に、この実装例のサンプルプログラムを添付します。

ダウンロード

<サンプルプログラムの利用法>

開発環境

  • OS : Windows XP SP2
  • Acrobat : Acrobat 7.0.1
  • SDK : Acrobat SDK 7.0 R1
  • Developement : Visual C++ .NET 2003

利用方法

  1. プロジェクトの Debug フォルダにある .api ファイルを Acrobat にインストールします。
  2. PDF ページ上で、テキストを選択します。
  3. ツールバー「高度な編集」を有効にして表示すると、下図の赤い楕円でマークしたボタンが表示されますので、これを選択クリックします。
  4. 下図のように選択したテキスト領域が黒の矩形で覆われます。
図2:プラグインの実行結果

Additional Information(追加情報)

図1の PDEPathによる塗りつぶしの方法から、黒の矩形はテキストを覆い隠しているだけです。従って、下に隠れているテキストは、Acrobat の UI 上はまだ選択することができますので、メモ帳などにコピー&ペーストすることができます。

セキュリティ上、このようなテキスト抽出を制限するには、次のような方法が考えられます。

A. セキュリティを併用する方法

上記のプラグインを実行したPDFドキュメント全体に対して、パスワードセキュリティなどのセキュリティ設定を施し、テキスト抽出を禁止する。

B. テキストを書き換える方法

選択したテキストについて、矩形データを上書きするのではなく、テキスト文字列自身を全角文字などの '■' で置換する。(これは本プラグインとは全く異なる実装方法となります。)