FPDFでPDFにセキュリティを付ける方法のメモです。
FPDF本家サイトのScriptにProtectionというスクリプトがあるので、それをダウンロード。
MBFPDFと併用する場合の、mbfpdf.phpの書き換え方法
MBPDFと併用して使う場合、MBPDFを、FPDF_Protectionの派生クラスとなるように、変更する必要があります。
fpdf_protectionのファイルをインクルード(14行目あたりに追加)
PHP:
-
require('fpdf_protection.php');
クラスを定義してある部分の基底クラスを FPDF から FPDF_Protection に変更(42行目あたりを変更)
PHP:
-
class MBFPDF extends FPDF
下のように書き換え
PHP:
-
class MBFPDF extends FPDF_Protection
_putType0($font)関数(554行目あたり)の以下の一行(596行目あたり)を修正
PHP:
-
$this->_out('/CIDSystemInfo <</Registry (Adobe) /Ordering ('.$font['registry']['ordering'].’) /Supplement ‘.$font['registry']['supplement'].’>>’);
下のように書き換え
PHP:
-
$this->_out('/CIDSystemInfo <</Registry '.$this->_textstring('Adobe').' /Ordering '.$this->_textstring($font['registry']['ordering']).’ /Supplement ‘.$font['registry']['supplement'].’>>’);
基本的な使い方
PHP:
-
//MBFPDFクラスは、FPDF_Protectionの派生クラスにしておく
-
require('lib/mbfpdf.php');
-
-
$pdf=new MBFPDF();
-
-
//セキュリティを付ける(許可する動作, 開くときのパスワード, 編集するときのパスワード)
-
/*
-
許可する動作で、指定できる値(配列で指定)
-
copy: テキストと画像をクリップボードにコピーする
-
print: 印刷
-
modify: 編集
-
annot-forms: 注釈とフォーム
-
開くときのパスワードは、空の場合はパスワード無し。デフォルトは空
-
編集するときのパスワードは、指定しないとランダムになる
-
*/
-
-
//印刷のみ許可、開くときのパスワード=userpass、編集するときのパスワード=ownerpass
-
$pdf->
SetProtection(array('print'),
'userpass',
'ownerpass');
-
-
$pdf->AddMBFont(KOZMIN, 'EUC-JP');
-
-
$pdf->Open();
-
$pdf->AddPage();
-
-
$pdf->SetFont(KOZMIN, '', 14);
-
$pdf->Write(16,"セキュリティ付のPDFです。");
-
-
$pdf->Output('protect_output.pdf', 'D');