FPDFでPDFにセキュリティを付ける方法のメモです。
FPDF本家サイトのScriptにProtectionというスクリプトがあるので、それをダウンロード。
MBFPDFと併用する場合の、mbfpdf.phpの書き換え方法
MBPDFと併用して使う場合、MBPDFを、FPDF_Protectionの派生クラスとなるように、変更する必要があります。
fpdf_protectionのファイルをインクルード(14行目あたりに追加)
require('fpdf_protection.php');
クラスを定義してある部分の基底クラスを FPDF から FPDF_Protection に変更(42行目あたりを変更)
class MBFPDF extends FPDF
下のように書き換え
class MBFPDF extends FPDF_Protection
_putType0($font)関数(554行目あたり)の以下の一行(596行目あたり)を修正
$this->_out('/CIDSystemInfo <</Registry (Adobe) /Ordering ('.$font['registry']['ordering'].’) /Supplement ‘.$font['registry']['supplement'].’>>’);
下のように書き換え
$this->_out('/CIDSystemInfo <</Registry '.$this->_textstring('Adobe').' /Ordering '.$this->_textstring($font['registry']['ordering']).’ /Supplement ‘.$font['registry']['supplement'].’>>’);
基本的な使い方
//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');