Spire.Cloud.PDF.SDK提供了接口PdfSecurityApi可用于加密、解密PDF文档。本文将通过C#代码演示具体加密及解密方法。

使用工具:

Spire.Cloud.PDF.SDK

Visual Studio

必要步骤:

步骤一:dll文件获取及导入

方法1. 通过官网本地下载SDK文件包。(须在e-iceblue中国官网在线编辑板块中注册账号并登录)

下载后,解压文件,将Spire.Cloud.Pdf.Sdk.dll文件及其他三个dll添加引用至VS程序;

方法2. 在程序中通过Nuget搜索下载,直接导入所有dll。

导入效果如下如所示:

步骤二:App ID及Key获取。在“我的应用”板块中创建应用以获得App ID及App Key。

步骤三:源文档上传。在“文档管理”板块,上传源文档。这里可以建文件夹,将文档存放在文件夹下。不建文件夹时,源文档及结果文档直接保存在根目录。本文示例中,建了两个文件夹,分别用于存放源文档及结果文档。(云平台提供免费1 万次调用次数和 2G 文档内存)

C# 代码示例


【示例1】加密PDF文档

usingSystem;usingSpire.Cloud.Pdf.Sdk.Client;usingSpire.Cloud.Pdf.Sdk.Api;usingSystem.IO;usingSystem.Collections.Generic;namespaceEncryt{classProgram{staticStringappID="AppID";staticStringappKey="AppKey";staticvoidMain(string[]args){//配置账号信息ConfigurationpdfConfiguration=newConfiguration(appID,appKey);PdfSecurityApipdfSecurityApi=newPdfSecurityApi(pdfConfiguration);stringname="sample.pdf";//源文档stringoutPath="pdfsecurity/Encrypt.pdf";//结果文档路径(将结果文档存放在pdfsecurity文件夹下)stringuserPassword=ToBase64String("123");//用户密码stringownerPassword=ToBase64String("321");//所有者密码stringkeySize="Key40Bit";//设置keySize(如果不需要设置,可设置为null)List<string>permissionsFlags=newList<string>();//设置permissionsFlags(如果不需要设置,可设置为null)permissionsFlags.Add("Print");stringfolder="input";//源文档所在文件夹stringpassword=null;//源文档密码//调用方法加密文档pdfSecurityApi.EncryptDocumentInStorage(name,outPath,userPassword,ownerPassword,keySize,permissionsFlags,folder,password);}privatestaticstringToBase64String(stringvalue){byte[]b=System.Text.Encoding.UTF8.GetBytes(value);stringbase64String=Convert.ToBase64String(b);base64String=base64String.Replace("+","%2B");returnbase64String;}}}

生成的文档打开时,需要输入密码。

文档加密结果:

【示例2】解密PDF文档

这里以上文中生成的加密PDF为测试文档。

usingSystem;usingSpire.Cloud.Pdf.Sdk.Client;usingSpire.Cloud.Pdf.Sdk.Api;namespaceDecrypt{classProgram{staticStringappID="AppID";staticStringappKey="AppKey";staticvoidMain(string[]args){//配置账号信息ConfigurationpdfConfiguration=newConfiguration(appID,appKey);PdfSecurityApipdfSecurityApi=newPdfSecurityApi(pdfConfiguration);stringname="Encrypt.pdf";//源文档stringoutPath="pdfsecurity/Decrypt.pdf";//结果文档路径(pdfsecurity为结果文档所在文件夹)stringpassword=ToBase64String("321");//文档密码(这里需要使用ownerpassword)stringfolder="pdfsecurity";//源文档所在文件夹//调用方法解密文档pdfSecurityApi.DecryptDocumentInStorage(name,outPath,password,folder);}privatestaticstringToBase64String(stringvalue){byte[]b=System.Text.Encoding.UTF8.GetBytes(value);stringbase64String=Convert.ToBase64String(b);base64String=base64String.Replace("+","%2B");returnbase64String;}}}

生成的文档将不再有密码保护。

(本文完)