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;