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;
posted @ 2022-04-20 16:49  txgh  阅读(256)  评论(0编辑  收藏  举报