spire.cloud.pdf.sdk提供了接口pdfsecurityapi可用于加密、解密pdf文档。本文将通过c#代码演示具体加密及解密方法。
具体步骤:
步骤一:dll文件获取及导入。通过,并将spire.cloud.pdf.sdk.dll文件及其依赖项dll添加引用至vs程序;或通过nuget下载安装。可参考这篇文章里dll文件添加引用方法。
步骤二:app id及key获取。在创建账号,并在“我的应用”板块中创建应用以获得app id及app key。
步骤三:源文档上传。在“文档管理”板块,上传源文档。这里可以建文件夹,将文档存放在文件夹下。不建文件夹时,源文档及结果文档直接保存在根目录。本文示例中,建了两个文件夹,分别用于存放源文档及结果文档。(云平台提供免费1 万次调用次数和 2g 文档内存)
加密pdf文档
using system;
using spire.cloud.pdf.sdk.client;
using spire.cloud.pdf.sdk.api;
using system.io;
using system.collections.generic;
namespace encryt
{
class program
{
static string appid = "app id";
static string appkey = "app key";
static void main(string[] args)
{
//配置账号信息
configuration pdfconfiguration = new configuration(appid,appkey);
pdfsecurityapi pdfsecurityapi = new pdfsecurityapi(pdfconfiguration);
string name = "sample.pdf";//源文档
string outpath = "pdfsecurity/encrypt.pdf";//结果文档路径(将结果文档存放在pdfsecurity文件夹下)
string userpassword = tobase64string("123");//用户密码
string ownerpassword = tobase64string("321");//所有者密码
string keysize = "key40bit";//设置keysize(如果不需要设置,可设置为null)
list permissionsflags = new list();//设置permissionsflags(如果不需要设置,可设置为null)
permissionsflags.add("print");
string folder = "input";//源文档所在文件夹
string password = null;//源文档密码
//调用方法加密文档
pdfsecurityapi.encryptdocumentinstorage(name,outpath,userpassword,ownerpassword,keysize,permissionsflags,folder,password);
}
private static string tobase64string(string value)
{
byte[] b = system.text.encoding.utf8.getbytes(value);
string base64string = convert.tobase64string(b);
base64string = base64string.replace(" ", "+");
return base64string;
}
}
}
生成的文档打开时,需要输入密码。
文档加密结果:
解密pdf文档
这里以上文中生成的加密pdf为测试文档。
using system;
using spire.cloud.pdf.sdk.client;
using spire.cloud.pdf.sdk.api;
namespace decrypt
{
class program
{
static string appid = "app id";
static string appkey = "app key";
static void main(string[] args)
{
//配置账号信息
configuration pdfconfiguration = new configuration(appid, appkey);
pdfsecurityapi pdfsecurityapi = new pdfsecurityapi(pdfconfiguration);
string name = "encrypt.pdf";//源文档
string outpath = "pdfsecurity/decrypt.pdf";//结果文档路径(pdfsecurity为结果文档所在文件夹)
string password = tobase64string("321");//文档密码(这里需要使用ownerpassword)
string folder = "pdfsecurity";//源文档所在文件夹
//调用方法解密文档
pdfsecurityapi.decryptdocumentinstorage(name,outpath,password,folder);
}
private static string tobase64string(string value)
{
byte[] b = system.text.encoding.utf8.getbytes(value);
string base64string = convert.tobase64string(b);
base64string = base64string.replace(" ", "+");
return base64string;
}
}
}
生成的文档将不再有密码保护。