C# で PDF にセキュリティを設定

今回は、ActivePDF Toolkit を使って、既存する PDF にセキュリティを追加する方法をご案内したいと思います。

要件

ActivePDF Toolkit : 評価版はここからダウンロードできます。

使い方

ActivePDF Toolkit は、クラスライブラリで、機能を利用するには、Toolkit のインスタンスを作成し、必要なプロパティ、メソッドを設定して、PDF ファイルを出力する形になります。これをコードすると以下のようになります。(今回は、C# を使って説明します。)

// Instantiate Object
APToolkitNET.Toolkit oTK = new APToolkitNET.Toolkit();

// 出力する PDF ファイルの指定
oTK.OpenOutputFile ("new.pdf");

// Close the new file to complete PDF creation
oTK.CloseOutputFile();

// Release Object
oTK.Dispose();

これが Toolkit の基本となるコードです。

各行の説明

APToolkitNET.Toolkit oTK = new APToolkitNET.Toolkit();

でオブジェクトをインスタンス化し、

oTK.OpenOutputFile ("new.pdf");

で、”new.pdf” という PDF を作成、

oTK.CloseOutputFile();

で、作成した PDF を閉じます。

OpenOutputFile メソッドの前後にプロパティやメソッドを設定して、透かしを追加したり、セキュリティを追加したり、ページの結合や、抽出を行います。

※ C# / VB.NET を使用する場合、.NET DLL (APToolkitNET.dll) への参照を追加する必要があります ([ソリューション エクスプローラー] で [参照] を右クリックするか、[プロジェクト | 参照の追加] をクリックしてください)。APToolkitNET.dll は、Toolkit のインストール フォルダにあります。

今回のゴール

今回は、既存の PDF にセキュリティを設定するコードを紹介します。先程の基本コードに 3 つのメソッドを追加するだけです。

まず一つ目

セキュリティを設定するメソッドの SetPDFSecurity を OpenOutputFile メソッドの前に呼びます。

// Instantiate Object
APToolkitNET.Toolkit oTK = new APToolkitNET.Toolkit();

// Add encryption to the output PDF
oTK.SetPDFSecurity (5, "userpass", "ownerpass", true, false, true, false, true, false, true, false);

SetPDFSecurity のパラメーターを説明します。 詳細は Toolkit の API リファレンスを確認してください。

Data Type 名前 説明
int nEncryLevel 暗号化レベル
2 = RC4 40 bit
3 = RC4 128 bit
4 = AES 128 bit
5 = AES 256 bit
String UserPassword 文書を表示するためのパスワード
String OwnerPassword 文書を編集・修正するためのパスワード
long CanPrint 印刷の可否
True = 印刷可
False = 印刷不可
long CanEdit 編集の可否
True = 編集可
False = 編集不可
long CanCopy テキストと画像のコピーの可否
True = コピー可
False = コピー不可
long CanModify 文書の修正の可否
True = 修正可
False = 修正不可
long CanFillinFormFields フォームフィールドへの入力の可否
True = 入力可
False = 入力不可
long CanMakeAccessible アクセシビリティ機能の有効/無効
True = 有効
False = 無効
long CanAssemble 文書アセンブリ (ページの削除、回転、挿入、抽出操作) の可否
True = 可
False = 不可
long CanReproduce 高解像度印刷の可否
True = 可
False = 不可

※ 評価版の場合、指定したパスワードの前に “DEMO” の文字が追加されるので注意してください。今回の例の場合は、”userpass” は “DEMOuserpass”、”ownerpass” は “DEMOownerpass” になります。

次に 2 つ目

セキュリティを設定する既存の PDF を指定する OpenInputFile を呼び出します。

// Instantiate Object
APToolkitNET.Toolkit oTK = new APToolkitNET.Toolkit();

// Add encryption to the output PDF file
oTK.SetPDFSecurity (5, "userpass", "ownerpass", true, false, true, false, true, false, true, false);

// Open the existing PDF file
oTK.OpenInputFile("PDF.pdf");

// 出力する PDF ファイルの指定
oTK.OpenOutputFile ("new.pdf");
最後の 3 つ目

既存の PDF のページを新しく作成した PDF にコピーする CopyForm を呼び出します。

// Instantiate Object
APToolkitNET.Toolkit oTK = new APToolkitNET.Toolkit();

// Add encryption to the output PDF file
oTK.SetPDFSecurity (5, "userpass", "ownerpass", true, false, true, false, true, false, true, false);

// Open the existing PDF file
oTK.OpenInputFile("PDF.pdf");

// 出力する PDF ファイルの指定
oTK.OpenOutputFile ("new.pdf");

// Copy the template (with any changes) to the new file
oTK.CopyForm(0, 0);

CopyForm メソッドの最初のパラメーターは、コピーする入力ファイルの最初のページを指定します。0 を設定するとファイルの 1 ページ目になります。
2 つ目のパラメーターは、コピーする入力ファイルの最後のページになります。0 を設定するとファイルの最後のページとなります。

今回の例では、ファイルの全ページをコピーするので、0 と 0 を指定しています。
例えば、3 ページ目から 10 ページ目までコピーする場合は、CopyForm (3, 10) と指定します。

最後に今回新しく作成した PDF ファイルを閉じれば完了です。

// Instantiate Object
APToolkitNET.Toolkit oTK = new APToolkitNET.Toolkit();

// Add encryption to the output PDF file
oTK.SetPDFSecurity (5, "userpass", "ownerpass", true, false, true, false, true, false, true, false);

// Open the existing PDF file
oTK.OpenInputFile("PDF.pdf");

// 出力する PDF ファイルの指定
oTK.OpenOutputFile ("new.pdf");

// Copy the template (with any changes) to the new file
oTK.CopyForm(0, 0);

oTK.CloseOutputFile();

// Release Object
oTK.Dispose();

コンパイルして動作を確認してみてください。引き続き別のファイルにセキュリティを設定する場合は、CloseOutputFile の後に、ClearPDFSecurity を呼び出して、セキュリティの設定をクリアしてください。

おまけ

今回紹介した SetPDFSecurity、OpenInputFile、OpenOutputFile, CopyForm, CloseOutputFile メソッドを 1 つに纏めた便利なメソッドもあります。
それが EncryptPDF です。EncryptPDF を使うと、上記のコードが下記のようになります。

// Instantiate Object
APToolkitNET.Toolkit oTK = new APToolkitNET.Toolkit();

// Add encryption to the output PDF file
oTK.EncryptPDF (5, "PDF.pdf", "new.pdf", "userpass", "ownerpass", true, false, true, false, true, false, true, false);

// Release Object
oTK.Dispose();

セキュリティの設定だけの場合は、EncryptPDF を使ってみてください。

ActivePDF Toolkit の製品ページ:

C#, VB.NET アプリから PDF の操作、編集を可能にするライブラリ - ActivePDF Toolkit : エクセルソフト
エクセルソフト: ActivePDF Toolkit で、.NET プログラムによる PDF の結合/分割や、押印/暗号化/電子署名の追加まで!ActivePDF の API を使って、コストも管理も削減
タイトルとURLをコピーしました