delphi SynPDF 添加密码
<h1 id="synpdf-添加密码">SynPDF 添加密码</h1><h2 id="属性和方法">属性和方法</h2>
<h3 id="tpdfencryptionnew">TPdfEncryption.New</h3>
<pre><code class="language-delphi">class function New(aLevel: TPdfEncryptionLevel;
const aUserPassword, aOwnerPassword: string;
aPermissions: TPdfEncryptionPermissions): TPdfEncryption;
</code></pre>
<p>创建<code>TPdfEncryption</code> 的实例,作为创建文档 <code>TPdfDocument/TPdfDocumentGDI.Create()</code> 的加密参数。</p>
<p><strong>参数</strong></p>
<p><em>aLevel</em> 可用的加密级别;目前只实现了<em>elRC4_40</em>和<em>elRC4_128</em>级别。</p>
<p><em>aUserPassword</em> PDF文档的用户密码,将在文件打开时询问;设置为空<code>''</code>表示不阻止显示,但可选权限。</p>
<p><em>aOwnerPassword</em> 将在内部用于加密PDF文件内容;不能为空<code>''</code>。</p>
<p><em>aPermissions</em> PDF文档操作的限制集。</p>
<blockquote>
<p><em>aUserPassword</em>和<em>aOwnerPassword</em>密码都只能是ASCII-7字符。</p>
</blockquote>
<h3 id="tpdfencryptionlevel">TPdfEncryptionLevel</h3>
<p>可用的加密级别。</p>
<p><strong>unit</strong></p>
<p>SynPdf</p>
<pre><code class="language-delphi">TPdfEncryptionLevel = (elNone, elRC4_40, elRC4_128);
</code></pre>
<ul>
<li><em>elNone</em>没有加密的文档。</li>
<li><em>elRC4_40</em>RC4 40位。</li>
<li><em>elRC4_128</em>RC4 128位。</li>
</ul>
<blockquote>
<p>当前版本仅提供 RC4 40 位和 RC4 128 位,分别对应 PDF 1.3 和 PDF 1.4 格式。</p>
<p>对于 RC4 40 位和 RC4 128 位,关联密码的最大长度限制为 32 个字符,并且只能包含来自 Latin-1 编码的字符。</p>
</blockquote>
<h3 id="tpdfencryptionpermission">TPdfEncryptionPermission</h3>
<p>PDF 可以对文档操作的各种限制进行编码,这些限制可以单独授予或拒绝(但有些设置取决于其他设置)。</p>
<p><strong>unit</strong></p>
<p>SynPdf</p>
<pre><code class="language-delphi">TPdfEncryptionPermission = (epPrinting, epGeneralEditing, epContentCopy,
epAuthoringComment, epFillingForms, epContentExtraction,
epDocumentAssembly, epPrintingHighResolution);
</code></pre>
<p><em>epPrinting</em>打印;如果不允许打印,Acrobat 中的打印按钮将被禁用。</p>
<p><em>epPrintingHighResolution</em> 打印高分辨率;Acrobat 支持区分高分辨率和低分辨率打印。 低分辨率打印会生成仅适合个人使用的页面的位图图像,但会妨碍高质量的复制和重新提取。 请注意,位图打印不仅会导致输出质量低下,还会大大降低打印过程的速度。</p>
<p><em>epGeneralEditing</em> 修改文档;如果禁用此选项,则禁止任何文档修改。 允许内容提取和打印。</p>
<p><em>epContentCopy</em> 内容复制;如果禁用此选项,则禁止选择文档内容并将其复制到剪贴板以重新利用内容。 可访问性界面也被禁用。 如果您需要使用 Acrobat 搜索此类文档,您必须在 Acrobat 中选择“仅限认证插件”首选项。</p>
<p><em>epContentExtraction</em> 页面提取;如果禁用此选项,则禁止提取页面。</p>
<p><em>epAuthoringComment</em> 编写注释和表单域;如果禁用此选项,则禁止添加、修改或删除注释和表单域。 允许填写表单字段。</p>
<p><em>epFillingForms</em> 填写表单或签名;如果启用,用户可以签名和填写表单,但不能创建表单域。</p>
<p><em>epDocumentAssembly</em> 文档组合;如果禁用此功能,则禁止插入、删除或旋转页面,或创建书签和缩略图。</p>
<h3 id="tpdfencryptionpermissions">TPdfEncryptionPermissions</h3>
<p>PDF文档操作的限制集。</p>
<pre><code class="language-delphi">TPdfEncryptionPermissions = set of TPdfEncryptionPermission;
</code></pre>
<h3 id="pdf_permission_all">PDF_PERMISSION_ALL</h3>
<pre><code class="language-delphi">PDF_PERMISSION_ALL: TPdfEncryptionPermissions =
;
</code></pre>
<p>允许PDF加密文件的所有操作。</p>
<blockquote>
<p>用作 <code>TPdfEncryption.New()</code> 类方法的参数。</p>
</blockquote>
<h3 id="pdf_permission_nomodif">PDF_PERMISSION_NOMODIF</h3>
<pre><code class="language-delphi">PDF_PERMISSION_NOMODIF: TPdfEncryptionPermissions = [epPrinting,
epContentCopy, epPrintingHighResolution, epFillingForms,
epContentExtraction, epDocumentAssembly];
</code></pre>
<p>禁用PDF加密文件的修改和注释。</p>
<blockquote>
<p>用作 <code>TPdfEncryption.New()</code> 类方法的参数。</p>
</blockquote>
<h3 id="pdf_persmission_noprint">PDF_PERSMISSION_NOPRINT</h3>
<pre><code class="language-delphi">PDF_PERSMISSION_NOPRINT: TPdfEncryptionPermissions = [epGeneralEditing,
epContentCopy, epAuthoringComment, epContentExtraction, epDocumentAssembly];
</code></pre>
<p>禁用PDF加密文件的打印。</p>
<blockquote>
<p>用作 <code>TPdfEncryption.New()</code> 类方法的参数。</p>
</blockquote>
<h3 id="pdf_permission_nocopy">PDF_PERMISSION_NOCOPY</h3>
<pre><code class="language-delphi">PDF_PERMISSION_NOCOPY: TPdfEncryptionPermissions = [epPrinting,
epAuthoringComment, epPrintingHighResolution, epFillingForms];
</code></pre>
<p>禁用PDF加密文件的内容提取或复制。</p>
<blockquote>
<p>用作 <code>TPdfEncryption.New()</code> 类方法的参数。</p>
</blockquote>
<h3 id="pdf_permission_nocopynorprint">PDF_PERMISSION_NOCOPYNORPRINT</h3>
<pre><code class="language-delphi">PDF_PERMISSION_NOCOPYNORPRINT: TPdfEncryptionPermissions = [];
</code></pre>
<p>禁用PDF加密文件的所有操作。</p>
<blockquote>
<p>用作 <code>TPdfEncryption.New()</code> 类方法的参数。</p>
</blockquote>
<h2 id="例子">例子</h2>
<h3 id="设置用户密码">设置用户密码</h3>
<pre><code class="language-delphi">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;
</code></pre>
<h3 id="设置文档密码">设置文档密码</h3>
<pre><code class="language-delphi">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;
</code></pre><br><br>
来源:https://www.cnblogs.com/txgh/p/16170560.html
頁:
[1]