
PDF 加密是使用密码以及一些加密算法(包括 AES 或 RC4)来保护文档的过程。您还可以设置不同的权限来限制用户对不同操作的访问。例如,您只能允许打印、添加注释、填写表格等。在本文中,您将学习如何使用 C++ 加密 PDF 文件。此外,本文还介绍了如何使用 C++ 设置不同的权限和解密受密码保护的 PDF 文件。
用于加密或解密 PDF 文件的 C++ API
Aspose.PDF for C++ 是一个原生 C++ API,可让您创建、阅读和操作 PDF 文档。此外,它还允许您使用密码加密 PDF 并在几行代码内解密加密的 PDF。您可以从 下载 部分下载 API,或使用 NuGet 安装它。
使用 C++ 加密 PDF 文件
以下是使用 Aspose.PDF for C++ 加密 PDF 文件的步骤。
- 使用 Document 类加载 PDF 文档。
- 使用 DocumentPrivilege 类设置不同的权限,例如允许打印、允许修改内容等。
- 调用 Document.Encrypt(String, String, SharedPtr , CryptoAlgorithm, bool) 方法来加密 PDF。
- 使用 Document->Save(String) 方法保存 PDF。
以下代码示例展示了如何使用 C++ 加密 PDF 文件。
For complete examples and data files, please go to https://github.com/aspose-pdf/Aspose.Pdf-for-C
// 加载现有的 PDF 文档
auto doc = MakeObject<Document>(L"..\\Data\\SecurityAndSignatures\\input.pdf");
// 方式一:直接使用预定义的权限。
System::SharedPtr<Aspose::Pdf::Facades::DocumentPrivilege> privilege = Aspose::Pdf::Facades::DocumentPrivilege::get_Print();
doc->Encrypt(L"user", L"owner", privilege, CryptoAlgorithm::AESx128, false);
doc->Save(L"..\\Data\\SecurityAndSignatures\\SetPrivelegesWay1_out.pdf");
// Way2:基于预定义的权限,改变一些特定的权限。
System::SharedPtr<Aspose::Pdf::Facades::DocumentPrivilege> privilege2 = Aspose::Pdf::Facades::DocumentPrivilege::get_AllowAll();
privilege->set_AllowPrint(false);
privilege->set_AllowModifyContents(false);
doc->Encrypt(L"user", L"owner", privilege2, CryptoAlgorithm::AESx128, false);
doc->Save(L"..\\Data\\SecurityAndSignatures\\SetPrivelegesWay2_out.pdf");
// Way3:基于预定义的权限和更改某些特定的 Adobe Professional 权限组合。
System::SharedPtr<Aspose::Pdf::Facades::DocumentPrivilege> privilege3 = Aspose::Pdf::Facades::DocumentPrivilege::get_ForbidAll();
privilege->set_ChangeAllowLevel(1);
privilege->set_PrintAllowLevel(2);
doc->Encrypt(L"user", L"owner", privilege3, CryptoAlgorithm::AESx128, false);
doc->Save(L"..\\Data\\SecurityAndSignatures\\SetPrivelegesWay3_out.pdf");
// Way4:混合way2和way3
System::SharedPtr<Aspose::Pdf::Facades::DocumentPrivilege> privilege4 = Aspose::Pdf::Facades::DocumentPrivilege::get_ForbidAll();
privilege->set_ChangeAllowLevel(1);
privilege->set_AllowPrint(true);
doc->Encrypt(L"user", L"owner", privilege4, CryptoAlgorithm::AESx128, false);
doc->Save(L"..\\Data\\SecurityAndSignatures\\SetPrivelegesWay4_out.pdf");
使用 C++ 解密 PDF 文件
以下是使用 Aspose.PDF for C++ 解密 PDF 文件的步骤。
- 使用 Document 类加载 PDF 文件并提供文档的路径和密码。
- 使用 Document->Decrypt() 方法解密文件。
- 使用 Document->Save(String) 方法保存解密的 PDF。
以下代码示例展示了如何使用 C++ 解密 PDF。
For complete examples and data files, please go to https://github.com/aspose-pdf/Aspose.Pdf-for-C
// 加载现有的 PDF 文档
auto doc = MakeObject<Document>(L"..\\Data\\SecurityAndSignatures\\Decrypt.pdf", L"password");
// 解密 PDF
doc->Decrypt();
// 保存更新的文档
doc->Save(L"..\\Data\\SecurityAndSignatures\\Decrypt_out.pdf");
结论
在本文中,您学习了如何使用 C++ 加密或解密 PDF 文件。该代码示例还展示了如何在加密 PDF 文件时设置不同的权限。您可以使用 文档 探索有关 C++ PDF API 的更多信息。