Обмежити редагування документів
Іноді вам може знадобитися обмежити можливість редагування документа та дозволити лише певні дії з ним. Це може бути корисно для запобігання редагування іншими користувачами важливої та конфіденційної інформації у вашому документі.
Aspose.Words дозволяє обмежити редагування документа, задавши тип обмеження. Крім того, Aspose.Words також дозволяє задати параметри захисту документа від запису.
У цій статті пояснюється, як використовувати Aspose.Words для вибору типу обмеження, як додавати або видаляти Захист та як створювати необмежені редаговані області.
Виберіть тип обмеження редагування
Aspose.Words дозволяє керувати способом обмеження вмісту за допомогою параметра перерахування ProtectionType. Це дозволить вам вибрати точний тип захисту, наприклад, наступний:
- AllowOnlyComments
- AllowOnlyFormFields
- AllowOnlyRevisions
- ReadOnly
- NoProtection
Усі типи документів захищені паролем, і якщо цей пароль введено неправильно, Користувач не зможе законно змінити вміст вашого документа. Таким чином, якщо ваш документ повертається вам без вимоги ввести необхідний пароль, це ознака того, що щось не так.
Якщо ви не встановили пароль при виборі типу захисту, інші користувачі можуть просто проігнорувати захист вашого документа.
Додати захист документів
Додавання захисту до документа-це простий процес, оскільки все, що вам потрібно зробити, це застосувати один із методів захисту, описаних у цьому розділі.
Aspose.Words дозволяє захистити ваші документи від змін за допомогою методу Protect. Цей метод не є засобом захисту і не шифрує документ.
У Microsoft Word ви можете обмежити редагування подібним чином, використовуючи обидва:
- Обмежити редагування (Файл → Інформація → захист документа)
- Альтернативна функція- " обмежити редагування “(перегляд → захист → обмеження редагування)
Наступний приклад коду показує, як додати захист паролем до документа:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
// Create a new document and protect it with a password. | |
auto doc = System::MakeObject<Document>(); | |
// Apply Document Protection. | |
doc->Protect(ProtectionType::NoProtection, u"password"); | |
// Save the document. | |
doc->Save(ArtifactsDir + u"DocumentProtection.PasswordProtection.docx"); |
Наступний приклад коду показує, як обмежити редагування в документі, щоб редагування було можливим лише у полях форми:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
// Insert two sections with some text. | |
auto doc = System::MakeObject<Document>(); | |
auto builder = System::MakeObject<DocumentBuilder>(doc); | |
builder->Writeln(u"Text added to a document."); | |
// A document protection only works when document protection is turned and only editing in form fields is allowed. | |
doc->Protect(ProtectionType::AllowOnlyFormFields, u"password"); | |
// Save the protected document. | |
doc->Save(ArtifactsDir + u"DocumentProtection.PasswordProtection.docx"); |
Зняти захист документів
Aspose.Words дозволяє зняти захист з документа простим і безпосереднім зміною документа. Ви можете або зняти захист документа, не знаючи дійсного пароля, або ввести правильний пароль для розблокування документа, використовуючи метод Unprotect. Обидва способи зняття не мають відмінностей.
Наступний приклад коду показує, як зняти захист з документа:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
// Create a new document and protect it with a password. | |
auto doc = System::MakeObject<Document>(); | |
// Add text. | |
auto builder = System::MakeObject<DocumentBuilder>(doc); | |
builder->Writeln(u"Text added to a document."); | |
// Documents can have protection removed either with no password, or with the correct password. | |
doc->Unprotect(); | |
doc->Protect(ProtectionType::ReadOnly, u"newPassword"); | |
doc->Unprotect(u"newPassword"); | |
// Save the document. | |
doc->Save(ArtifactsDir + u"DocumentProtection.RemoveDocumentProtection.docx"); |
Вкажіть необмежені редаговані області
Ви можете обмежити редагування вашого документа і в той же час дозволити внесення змін до вибраних його частин. Таким чином, кожен, хто відкриє ваш документ, зможе отримати доступ до цих необмежених частин та внести зміни до вмісту.
Aspose.Words дозволяє позначити частини, які можуть бути змінені у вашому документі, використовуючи методи StartEditableRange та EndEditableRange.
Наступний приклад коду показує, як позначити весь документ лише для читання та вказати в ньому області, доступні для редагування:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
// Upload a document and make it as read-only. | |
auto doc = System::MakeObject<Document>(MyDir + u"Document.docx"); | |
auto builder = System::MakeObject<DocumentBuilder>(doc); | |
doc->Protect(ProtectionType::ReadOnly, u"MyPassword"); | |
builder->Writeln(u"Hello world! Since we have set the document's protection level to read-only, we cannot edit this paragraph without the password."); | |
// Start an editable range. | |
auto edRangeStart = builder->StartEditableRange(); | |
// An EditableRange object is created for the EditableRangeStart that we just made. | |
auto editableRange = edRangeStart->get_EditableRange(); | |
// Put something inside the editable range. | |
builder->Writeln(u"Paragraph inside first editable range"); | |
// An editable range is well-formed if it has a start and an end. | |
auto edRangeEnd = builder->EndEditableRange(); | |
// Save your document. | |
builder->Writeln(u"This paragraph is outside any editable ranges, and cannot be edited."); | |
doc->Save(ArtifactsDir + u"DocumentProtection.UnrestrictedEditableRegions.docx"); |
Ви також можете встановити різні обмеження на редагування документа для різних розділів.
Наступний приклад коду показує, як додати обмеження для всього документа, а потім видалити обмеження для одного з розділів:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
// Insert two sections with some text. | |
auto doc = System::MakeObject<Document>(); | |
auto builder = System::MakeObject<DocumentBuilder>(doc); | |
builder->Writeln(u"Section 1. Unprotected."); | |
builder->InsertBreak(BreakType::SectionBreakContinuous); | |
builder->Writeln(u"Section 2. Protected."); | |
// Section protection only works when document protection is turned and only editing in form fields is allowed. | |
doc->Protect(ProtectionType::AllowOnlyFormFields, u"password"); | |
// By default, all sections are protected, but we can selectively turn protection off. | |
doc->get_Sections()->idx_get(0)->set_ProtectedForForms(false); | |
doc->Save(ArtifactsDir + u"DocumentProtection.UnrestrictedSection.docx"); | |
doc = System::MakeObject<Document>(ArtifactsDir + u"DocumentProtection.UnrestrictedSection.docx"); | |
ASSERT_FALSE(doc->get_Sections()->idx_get(0)->get_ProtectedForForms()); | |
ASSERT_TRUE(doc->get_Sections()->idx_get(1)->get_ProtectedForForms()); |