Ограничить редактирование документов
Иногда вам может потребоваться ограничить возможность редактирования документа и разрешить только определенные действия с ним. Это может быть полезно для предотвращения редактирования другими пользователями важной и конфиденциальной информации в вашем документе.
Aspose.Words позволяет ограничить редактирование документа, задав тип ограничения. Кроме того, Aspose.Words также позволяет задать параметры защиты документа от записи.
В этой статье объясняется, как использовать Aspose.Words для выбора типа ограничения, как добавлять или удалять защиту и как создавать неограниченные редактируемые области.
Выберите тип ограничения редактирования
Aspose.Words позволяет вам управлять способом ограничения содержимого с помощью параметра перечисления ProtectionType. Это позволит вам выбрать точный тип защиты, например, следующий:
- Разрешить только комментарии
- Разрешать только поля формы
- Разрешить только изменения
- Только для чтения
- Никакой защиты
Все типы документов защищены паролем, и если этот пароль введен неправильно, пользователь не сможет законным образом изменить содержимое вашего документа. Таким образом, если ваш документ возвращается вам без требования ввести необходимый пароль, это признак того, что что-то не так.
Если вы не установили пароль при выборе типа защиты, другие пользователи могут просто проигнорировать защиту вашего документа.
Добавить защиту документов
Добавление защиты к вашему документу - это простой процесс, так как все, что вам нужно сделать, это применить один из методов защиты, описанных в этом разделе.
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()); |