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