spire.pdf支持两种口令保护方式,文档打开口令和许可口令。文档打开口令只能用于打开文档,而许可口令则是级别更高的口令,它既可以打开文档,也可以用来编辑和修改文档的权限。我们可以对一个文档设置打开口令或许可口令中的一种,也可以二者都设置。spire.pdf 3.9.241 对口令保护方法做了调整。如果您使用的是3.9.241以前的老版本,请参考 。如果使用的是v3.9.241 以后的新版本,请使用该文中提供的新方法。该示例将详细介绍如何使用密码方式给pdf文档加密和解密。
加密pdf
spire.pdf 提供 pdf.security.encrypt(string openpassword, string permissionpassword, pdfpermissionsflags permissions, pdfencryptionkeysize keysize) 方法来设置打开口令,许可口令,设置文档加密级别和设置文档权限。
//加载pdf
pdfdocument pdf = new pdfdocument();
pdf.loadfromfile("sample.pdf");
//保护pdf文档
pdf.security.encrypt("open", "permission", pdfpermissionsflags.print|pdfpermissionsflags.copycontent, pdfencryptionkeysize.key128bit);
//保存文档
pdf.savetofile("encrypted.pdf", fileformat.pdf);
'加载pdf
dim pdf as new pdfdocument()
pdf.loadfromfile("sample.pdf")
'保护pdf文档
pdf.security.encrypt("open", "permission", pdfpermissionsflags.print or pdfpermissionsflags.copycontent, pdfencryptionkeysize.key128bit)
'保存文档
pdf.savetofile("encrypted.pdf", fileformat.pdf)
解密pdf
首先需要使用密码用pdfdocument.loadfromfile (string filename, string password) 方法加载一个被保护的pdf文档 (打开口令和许可口令均可)。 然后用pdf.security.encrypt(string openpassword, string permissionpassword, pdfpermissionsflags permissions, pdfencryptionkeysize keysize, string originalpermissionpassword) 方法将打开口令,许可口令设置为空达到解密效果。
//使用密码加载一个加密的pdf文档
pdfdocument pdf = new pdfdocument();
pdf.loadfromfile("encrypted.pdf", "open");
//将打开口令和许可口令设置为空,同时设置文档权限,加密级别,输入原始许可口令
pdf.security.encrypt(string.empty, string.empty, pdfpermissionsflags.default, pdfencryptionkeysize.key128bit, "permission");
//保存文档
pdf.savetofile("decrypt.pdf", fileformat.pdf);
'使用密码加载一个加密的pdf文档
dim pdf as new pdfdocument()
pdf.loadfromfile("encrypted.pdf", "open")
'将打开口令和许可口令设置为空,同时设置文档权限,加密级别,输入原始许可口令
pdf.security.encrypt(string.empty, string.empty, pdfpermissionsflags.[default], pdfencryptionkeysize.key128bit, "permission")
'保存文档
pdf.savetofile("decrypt.pdf", fileformat.pdf)