
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");
// 方式4:混合方式2和方式3
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 的更多信息。