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