TCPDF 加密核心方法
$pdf->SetProtection(
$permissions = array('print', 'modify', 'copy', 'annot-forms', 'fill-forms', 'extract', 'assemble', 'print-high'),
$user_pass = '', // 使用者開啟密碼(空 = 無密碼)
$owner_pass = null, // 擁有者密碼(預設 = 隨機)
$mode = 0, // 加密模式:0=RC4 40bit, 1=RC4 128bit, 2=AES 128bit, 3=AES 256bit
$pubkeys = null // 公開金鑰加密陣列(進階)
);
參數詳細說明
| 參數 | 說明 | 預設值 |
| permissions | 允許操作陣列,空陣列 = 完全限制 | 全部允許 |
| user_pass | 使用者開啟 PDF 時需輸入的密碼 | 空(無密碼) |
| owner_pass | 擁有者密碼(可移除限制),null = 自動產生隨機 | 隨機 |
| mode | 0=RC4 40bit, 1=RC4 128bit, 2=AES 128bit, 3=AES 256bit | 0 |
| pubkeys | 公開金鑰證書陣列,用於企業級權限控制 | null |
實戰範例
require_once('tcpdf/tcpdf.php');
$pdf = new TCPDF();
$pdf->AddPage();
$pdf->SetFont('helvetica', '', 12);
$pdf->Write(0, '這是一份加密的 PDF 文件', '', 0, 'C', true, 0, false, false, 0);
// 設定:使用者密碼 123456,擁有者密碼 admin123,AES 256bit,禁止列印、修改、複製
$pdf->SetProtection(
array(), // 完全禁止所有操作
'123456', // 開啟密碼
'admin123', // 擁有者密碼
3 // AES 256bit
);
$pdf->Output('encrypted.pdf', 'F'); // 儲存至檔案
效果驗證
- 開啟
encrypted.pdf → 提示輸入密碼
- 輸入
123456 → 可檢視但無法列印/複製/修改
- 輸入
admin123 → 可移除所有限制
注意事項
- 加密模式 2/3 (AES) 需 PDF 1.6+ 相容檢視器(Acrobat 7+、Foxit、Chrome 內建皆支援)
- 若
$user_pass 為空,僅設定權限不要求開啟密碼
- 權限陣列可選值:
print, modify, copy, annot-forms, fill-forms, extract, assemble, print-high