FPDFでPDFにセキュリティ(文書の制限)を付ける

FPDFでPDFにセキュリティを付ける方法のメモです。
FPDF本家サイトのScriptにProtectionというスクリプトがあるので、それをダウンロード。

MBFPDFと併用する場合の、mbfpdf.phpの書き換え方法

MBPDFと併用して使う場合、MBPDFを、FPDF_Protectionの派生クラスとなるように、変更する必要があります。

fpdf_protectionのファイルをインクルード(14行目あたりに追加)

PHP:
  1. require('fpdf_protection.php');

クラスを定義してある部分の基底クラスを FPDF から FPDF_Protection に変更(42行目あたりを変更)

PHP:
  1. class MBFPDF extends FPDF

下のように書き換え

PHP:
  1. class MBFPDF extends FPDF_Protection

_putType0($font)関数(554行目あたり)の以下の一行(596行目あたり)を修正

PHP:
  1. $this->_out('/CIDSystemInfo <</Registry (Adobe) /Ordering ('.$font['registry']['ordering'].’) /Supplement ‘.$font['registry']['supplement'].’>>’);

下のように書き換え

PHP:
  1. $this->_out('/CIDSystemInfo <</Registry '.$this->_textstring('Adobe').' /Ordering '.$this->_textstring($font['registry']['ordering']).’ /Supplement ‘.$font['registry']['supplement'].’>>’);

基本的な使い方

PHP:
  1. //MBFPDFクラスは、FPDF_Protectionの派生クラスにしておく
  2. require('lib/mbfpdf.php');
  3.  
  4. $pdf=new MBFPDF();
  5.  
  6. //セキュリティを付ける(許可する動作, 開くときのパスワード, 編集するときのパスワード)
  7. /*
  8. 許可する動作で、指定できる値(配列で指定)
  9.   copy: テキストと画像をクリップボードにコピーする
  10.   print: 印刷
  11.   modify: 編集
  12.   annot-forms: 注釈とフォーム
  13. 開くときのパスワードは、空の場合はパスワード無し。デフォルトは空
  14. 編集するときのパスワードは、指定しないとランダムになる
  15. */
  16.  
  17. //印刷のみ許可、開くときのパスワード=userpass、編集するときのパスワード=ownerpass
  18. $pdf->SetProtection(array('print'), 'userpass', 'ownerpass');
  19.  
  20. $pdf->AddMBFont(KOZMIN, 'EUC-JP');
  21.  
  22. $pdf->Open();
  23. $pdf->AddPage();
  24.  
  25. $pdf->SetFont(KOZMIN, '', 14);
  26. $pdf->Write(16,"セキュリティ付のPDFです。");
  27.  
  28. $pdf->Output('protect_output.pdf', 'D');

コメント・トラックバック

コメントを送る
※は入力必須です。コメントは管理者の承認後に表示されます。