Document security is particularly important when critical or private data is involved in a Word document. There are several security options in Word that you can use to protect your documents, including password protection, read-only mode, editing restrictions, and partial protection. On the contrary, when the protection is no longer required, you may need to unprotect a Word document to improve work efficiency.
In this article, you will learn how to protect or unprotect Word documents in C++ using Spire.Doc for C++.
- Password Protect a Word Document in C++
- Restrict Editing of a Word Document in C++
- Protect Sections of a Word Document in C++
- Create Editable Regions in a Word Document in C++
- Remove Editable Regions from a Word Document in C++
- Remove Restrictions from a Word Document in C++
- Remove Password from a Password-Protected Word Document in C++
Install Spire.Doc for C++
There are two ways to integrate Spire.Doc for C++ into your application. One way is to install it through NuGet, and the other way is to download the package from our website and copy the libraries into your program. Installation via NuGet is simpler and more recommended. You can find more details by visiting the following link.
Integrate Spire.Doc for C++ in a C++ Application
Password Protect a Word Document in C++
Encrypting a document with a password makes sure that only you and certain people can read or edit it. The following are the steps to password protect a Word document using Spire.Doc for C++.
- Create a Document object.
- Load a Word document using Document->LoadFromFile() method.
- Encrypt the document with a password using Document->Eencrypt(LPCWSTR_S password) method.
- Save the document to another Word file using Document->SaveToFile() method.
- C++
#include "Spire.Doc.o.h"; using namespace Spire::Doc; int main() { //Create a Document object Document* document = new Document(); //Load a Word file document->LoadFromFile(L"C:\\Users\\Administrator\\Desktop\\sample.docx"); //Encrypt the document with a password document->Encrypt(L"open-psd"); //Save the document to another Word file document->SaveToFile(L"Output/Encryption.docx", FileFormat::Docx2013); document->Close(); delete document; }
Restrict Editing of a Word Document in C++
If you want to grant people permission to read your document but restrict the types of modifications that someone can make, you can protect your document with a specific protection type and a permission password.
Protection Type | Description |
AllowOnlyComments | Modification of comments in the document is allowed. |
AllowOnlyFormFields | The user can only enter data in the form fields in the document. |
AllowOnlyReading | The document is read-only. |
AllowOnlyRevisions | The user can only add revision marks to the document. |
NoProtection | The document is not protected. |
The following are the steps to restrict editing of a Word document using Spire.Doc for C++.
- Create a Document object.
- Load a Word document using Document->LoadFromFile() method.
- Protect the document by specifying the protection type and the permission password using Document->Protect(Spire::Doc::ProtectionType type, LPCWSTR_S password) method.
- Save the document to another Word file using Document->SaveToFile() method.
- C++
#include "Spire.Doc.o.h"; using namespace Spire::Doc; int main() { //Create a Document object Document* document = new Document(); //Load a Word file document->LoadFromFile(L"C:\\Users\\Administrator\\Desktop\\sample.docx"); //Protect the document by specifying the protection type and the password document->Protect(ProtectionType::AllowOnlyReading, L"permission-psd"); //Save the document to another Word file document->SaveToFile(L"Output/RestrictEditing.docx", FileFormat::Docx2013); document->Close(); delete document; }
Protect Sections of a Word Document in C++
Word allows you to lock some sections of your Word document and leave the rest available for editing. The following are the steps to protect selected sections of a Word document using Spire.Doc for C++.
- Create a Document object.
- Load a Word document using Document->LoadFromFile() method.
- Set the protection type to AllowOnlyFormFields using Document->Protect() method.
- Unprotect a particular section by passing false as an argument to the Section->SetProtectForm() method. Other sections will continue to be protected.
- Save the document to another Word file using Document->SaveToFile() method.
- C++
#include "Spire.Doc.o.h"; using namespace Spire::Doc; int main() { //Create a Document object Document* document = new Document(); //Load a Word file document->LoadFromFile(L"C:\\Users\\Administrator\\Desktop\\sample.docx"); //Set the protection type as "AllowOnlyFormFields" document->Protect(ProtectionType::AllowOnlyFormFields, L"permission-psd"); //Unprotect section 2 document->GetSections()->GetItem(1)->SetProtectForm(false); //Save the document to another Word file document->SaveToFile(L"Output/ProtectSections.docx", FileFormat::Docx2013); document->Close(); delete document; }
Create Editable Regions in a Word Document in C++
Aside from making certain sections editable, you can create editable regions based on text ranges in order to narrow down the scope of changes that users are able to make. The following are the steps to create editable regions in a read-only Word document using Spire.Doc for C++.
- Create a Document object.
- Load a Word file using Document->LoadFromFile() method.
- Set the protection type to AllowOnlyReading using Document->Protect() method.
- Create a PermissionStart object and a PermissionEnd object.
- Insert the PermissionStart object at the beginning of a paragraph using DocumentObjectCollection->Insert(int index, Spire::Doc::lDocumentObject *entity) method, which indicates the start of an editable region.
- Add the PermissionEnd object at the end of a paragraph using DocumentObjectCollection->Add(Spire::Doc::lDocumentObject *entity) method, which indicates the end of an editable region.
- Save the document to another Word file using Document->SaveToFile() method.
- C++
#include "Spire.Doc.o.h"; using namespace Spire::Doc; int main() { //Create a Document object Document* document = new Document(); //Load a Word file document->LoadFromFile(L"C:\\Users\\Administrator\\Desktop\\sample2.docx"); //Set the protect type to AllowOnlyReading document->Protect(ProtectionType::AllowOnlyReading, L"permission-psd"); //Create tags for permission start and end PermissionStart* start = new PermissionStart(document, L"regionOne"); PermissionEnd* end = new PermissionEnd(document, L"regionOne"); //Add the start and end tags to allow the selected paragraphs to be editable document->GetSections()->GetItem(0)->GetParagraphs()->GetItem(0)->GetChildObjects()->Insert(0, start); document->GetSections()->GetItem(0)->GetParagraphs()->GetItem(1)->GetChildObjects()->Add(end); //Save the document to another Word file document->SaveToFile(L"Output/SetEditableRegions.docx", FileFormat::Docx2013); document->Close(); delete document; }
Remove Editable Regions from a Word Document in C++
In order to remove the editable regions, you need to find the "PermissionStart" and "PermissionEnd" tags in the document and remove them. The following are the detailed steps.
- Create a Document object.
- Load a Word document containing editable regions using Document->LoadFromFile() method.
- Traverse through all the child objects in the document, and determine if a certain child object is an instance of PermissionStart class or PermissionEnd class. If yes, remove the child object from the paragraph using Paragraph->GetChildObjects()->Remove(Spire::Doc::IDocumentObject *entity) method.
- Save the document to another Word file using Document->SaveToFile() method.
- C++
#include "Spire.Doc.o.h"; using namespace Spire::Doc; int main() { //Create a Document object Document* document = new Document(); //Load a Word file document->LoadFromFile(L"C:\\Users\\Administrator\\Desktop\\SetEditableRegions.docx"); //Find "PermissionStart" and "PermissionEnd" tags and remove them for (int i = 0; i < document->GetSections()->GetCount(); i++) { Section* section = document->GetSections()->GetItem(i); for (int j = 0; j < section->GetBody()->GetParagraphs()->GetCount(); j++) { Paragraph* para = section->GetBody()->GetParagraphs()->GetItem(j); for (int k = 0; k < para->GetChildObjects()->GetCount(); k++) { DocumentObject* obj = para->GetChildObjects()->GetItem(k); if (dynamic_cast<PermissionStart*>(obj) != nullptr || dynamic_cast<PermissionEnd*>(obj) != nullptr) { para->GetChildObjects()->Remove(obj); } else { k++; } } } } //Save the document to another Word file document->SaveToFile(L"Output/RemoveEditableRegions.docx", FileFormat::Docx2013); document->Close(); delete document; }
Remove Restrictions from a Word Document in C++
Spire.Doc for C++ allows you to remove editing restrictions without knowing the permission password. The following are the detailed steps.
- Create a Document object.
- Load a Word document containing editing restrictions using Document->LoadFromFile() method.
- Set the protection type to NoProtection using Document->Protect() method.
- Save the document to another Word file using Document->SaveToFile() method.
- C++
#include "Spire.Doc.o.h"; using namespace Spire::Doc; int main() { //Create a Document object Document* document = new Document(); //Load a Word file document->LoadFromFile(L"C:\\Users\\Administrator\\Desktop\\RestrictEditing.docx"); //Set the protect type to NoProtection document->Protect(ProtectionType::NoProtection); //Save the document to another Word file document->SaveToFile(L"Output/RemoveRestrictions.docx", FileFormat::Docx2013); document->Close(); delete document; }
Remove Password from a Password-Protected Word Document in C++
The password of an encrypted Word document can be removed if it is no longer needed. The following are the detailed steps.
- Create a Document object.
- Load a password-protected Word document using Document->LoadFromFile((LPCWSTR_S fileName, Spire::Doc::FileFormat fileFormat, LPCWSTR_S password) method.
- Remove the password using Document->RemoveEncryption() method.
- Save the document to another Word file using Document->SaveToFile() method.
- C++
#include "Spire.Doc.o.h"; using namespace Spire::Doc; int main() { //Create a Document object Document* document = new Document(); //Load an encrypted Word file document->LoadFromFile(L"C:\\Users\\Administrator\\Desktop\\Encryption.docx", FileFormat::Docx, L"open-psd"); //Remove the open password document->RemoveEncryption(); //Save the document to another Word file document->SaveToFile(L"Output/RemovePassword.docx", FileFormat::Docx2013); document->Close(); delete document; }
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.