首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

使用 TCPDF 產生加密 PDF:SetProtection() 設定開啟密碼、權限與加密模式

     編輯:PHP 綜合知識

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 = 自動產生隨機隨機
mode0=RC4 40bit, 1=RC4 128bit, 2=AES 128bit, 3=AES 256bit0
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'); // 儲存至檔案

效果驗證

  1. 開啟 encrypted.pdf → 提示輸入密碼
  2. 輸入 123456 → 可檢視但無法列印/複製/修改
  3. 輸入 admin123 → 可移除所有限制

注意事項

  • 加密模式 2/3 (AES) 需 PDF 1.6+ 相容檢視器(Acrobat 7+、Foxit、Chrome 內建皆支援)
  • 若 $user_pass 為空,僅設定權限不要求開啟密碼
  • 權限陣列可選值:print, modify, copy, annot-forms, fill-forms, extract, assemble, print-high
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved