delphi SynPDF 新增密碼
SynPDF 新增密碼
屬性和方法
TPdfEncryption.New
class function New(aLevel: TPdfEncryptionLevel;
const aUserPassword, aOwnerPassword: string;
aPermissions: TPdfEncryptionPermissions): TPdfEncryption;
建立TPdfEncryption
的例項,作為建立文件 TPdfDocument/TPdfDocumentGDI.Create()
的加密引數。
引數
aLevel 可用的加密級別;目前只實現了elRC4_40和elRC4_128
aUserPassword PDF文件的使用者密碼,將在檔案開啟時詢問;設定為空''
表示不阻止顯示,但可選許可權。
aOwnerPassword 將在內部用於加密PDF檔案內容;不能為空''
。
aPermissions PDF文件操作的限制集。
aUserPassword和aOwnerPassword密碼都只能是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;