1. 程式人生 > 其它 >delphi SynPDF 新增密碼

delphi SynPDF 新增密碼

SynPDF 新增密碼

屬性和方法

TPdfEncryption.New

class function New(aLevel: TPdfEncryptionLevel;
  const aUserPassword, aOwnerPassword: string;
  aPermissions: TPdfEncryptionPermissions): TPdfEncryption;

建立TPdfEncryption 的例項,作為建立文件 TPdfDocument/TPdfDocumentGDI.Create() 的加密引數。

引數

aLevel 可用的加密級別;目前只實現了elRC4_40elRC4_128

級別。

aUserPassword PDF文件的使用者密碼,將在檔案開啟時詢問;設定為空''表示不阻止顯示,但可選許可權。

aOwnerPassword 將在內部用於加密PDF檔案內容;不能為空''

aPermissions PDF文件操作的限制集。

aUserPasswordaOwnerPassword密碼都只能是ASCII-7字元。

TPdfEncryptionLevel

可用的加密級別。

unit

SynPdf

TPdfEncryptionLevel = (elNone, elRC4_40, elRC4_128);
  • elNone 沒有加密的文件。
  • elRC4_40 RC4 40位。
  • elRC4_128 RC4 128位。

當前版本僅提供 RC4 40 位和 RC4 128 位,分別對應 PDF 1.3 和 PDF 1.4 格式。

對於 RC4 40 位和 RC4 128 位,關聯密碼的最大長度限制為 32 個字元,並且只能包含來自 Latin-1 編碼的字元。

TPdfEncryptionPermission

PDF 可以對文件操作的各種限制進行編碼,這些限制可以單獨授予或拒絕(但有些設定取決於其他設定)。

unit

SynPdf

TPdfEncryptionPermission = (epPrinting, epGeneralEditing, epContentCopy,
  epAuthoringComment, epFillingForms, epContentExtraction,
  epDocumentAssembly, epPrintingHighResolution);

epPrinting 列印;如果不允許列印,Acrobat 中的列印按鈕將被禁用。

epPrintingHighResolution 列印高解析度;Acrobat 支援區分高解析度和低解析度列印。 低解析度列印會生成僅適合個人使用的頁面的點陣圖影象,但會妨礙高質量的複製和重新提取。 請注意,點陣圖列印不僅會導致輸出質量低下,還會大大降低列印過程的速度。

epGeneralEditing 修改文件;如果禁用此選項,則禁止任何文件修改。 允許內容提取和列印。

epContentCopy 內容複製;如果禁用此選項,則禁止選擇文件內容並將其複製到剪貼簿以重新利用內容。 可訪問性介面也被禁用。 如果您需要使用 Acrobat 搜尋此類文件,您必須在 Acrobat 中選擇“僅限認證外掛”首選項。

epContentExtraction 頁面提取;如果禁用此選項,則禁止提取頁面。

epAuthoringComment 編寫註釋和表單域;如果禁用此選項,則禁止新增、修改或刪除註釋和表單域。 允許填寫表單欄位。

epFillingForms 填寫表單或簽名;如果啟用,使用者可以簽名和填寫表單,但不能建立表單域。

epDocumentAssembly 文件組合;如果禁用此功能,則禁止插入、刪除或旋轉頁面,或建立書籤和縮圖。

TPdfEncryptionPermissions

PDF文件操作的限制集。

TPdfEncryptionPermissions = set of TPdfEncryptionPermission;

PDF_PERMISSION_ALL

PDF_PERMISSION_ALL: TPdfEncryptionPermissions =
  [Low(TPdfEncryptionPermission)..high(TPdfEncryptionPermission)];

允許PDF加密檔案的所有操作。

用作 TPdfEncryption.New() 類方法的引數。

PDF_PERMISSION_NOMODIF

PDF_PERMISSION_NOMODIF: TPdfEncryptionPermissions = [epPrinting,
  epContentCopy, epPrintingHighResolution, epFillingForms,
  epContentExtraction, epDocumentAssembly];

禁用PDF加密檔案的修改和註釋。

用作 TPdfEncryption.New() 類方法的引數。

PDF_PERSMISSION_NOPRINT

PDF_PERSMISSION_NOPRINT: TPdfEncryptionPermissions = [epGeneralEditing,
  epContentCopy, epAuthoringComment, epContentExtraction, epDocumentAssembly];

禁用PDF加密檔案的列印。

用作 TPdfEncryption.New() 類方法的引數。

PDF_PERMISSION_NOCOPY

PDF_PERMISSION_NOCOPY: TPdfEncryptionPermissions = [epPrinting,
  epAuthoringComment, epPrintingHighResolution, epFillingForms];

禁用PDF加密檔案的內容提取或複製。

用作 TPdfEncryption.New() 類方法的引數。

PDF_PERMISSION_NOCOPYNORPRINT

PDF_PERMISSION_NOCOPYNORPRINT: TPdfEncryptionPermissions = [];

禁用PDF加密檔案的所有操作。

用作 TPdfEncryption.New() 類方法的引數。

例子

設定使用者密碼

uses SynPdf;

procedure TForm1.Button7Click(Sender: TObject);
var
  Pdf: TPdfDocumentGDI;
begin
  //建立PDF文件
  Pdf := TPdfDocumentGDI.Create(False, 0, False,
    TPdfEncryption.New(elRC4_40, 'ceshi', 'ceshi', PDF_PERMISSION_ALL));
  try
    Pdf.AddPage;
    Pdf.SaveToFile('C:\Users\Administrator\Desktop\ceshi.pdf');
  finally
    Pdf.Free;
  end;
end;

設定文件密碼

uses SynPdf;

procedure TForm1.Button8Click(Sender: TObject);
var
  Pdf: TPdfDocumentGDI;
begin
  //建立PDF文件並設定文件密碼,不允許列印
  Pdf := TPdfDocumentGDI.Create(False, 0, False,
    TPdfEncryption.New(elRC4_40, '', 'ceshi', PDF_PERSMISSION_NOPRINT));
  try
    Pdf.AddPage;
    with Pdf.VCLCanvas do
    begin
      Font.Name := '宋體';
      Font.Size := 20;
      TextOut(100, 100, '文件密碼:ceshi');
    end;
    Pdf.SaveToFile('C:\Users\Administrator\Desktop\ceshi.pdf');
  finally
    Pdf.Free;
  end;
end;