Ограничаване На Редактирането На Документи

Понякога може да се наложи да ограничите възможността за редактиране на документ и да разрешите само определени действия с него. Това може да е полезно, за да предотвратите редактирането на чувствителна и поверителна информация във вашия документ от други хора.

Aspose.Words Позволява ви да ограничите редактирането на документ, като зададете тип ограничение. В допълнение Aspose.Words също ви позволява да зададете настройки за защита на запис за документ.

Тази статия обяснява как да използвате Aspose.Words, за да изберете тип ограничение, как да добавите или премахнете защита и как да направите неограничени редактируеми региони.

Изберете Тип На Ограничението За Редактиране

Aspose.Words ви позволява да контролирате начина, по който ограничавате съдържанието, като използвате параметъра ProtectionType изброяване. Това ще ви позволи да изберете точен тип защита, като например::

  • AllowOnlyComments
  • AllowOnlyFormFields
  • AllowOnlyRevisions
  • ReadOnly
  • NoProtection

Всички видове са защитени с парола и ако тази парола не е въведена правилно, потребителят няма да може законно да променя съдържанието на вашия документ. По този начин, ако документът ви бъде върнат без изискване за предоставяне на необходимата парола, това е знак, че нещо не е наред.

Ако не сте задали парола при избора на типа защита, другите потребители могат просто да игнорират защитата на вашия документ.

Добавяне На Защита На Документ

Добавянето на защита към вашия документ е прост процес, тъй като всичко, което трябва да направите, е да приложите един от методите за защита, описани подробно в този раздел.

Aspose.Words ви позволява да защитите документите си от промени, като използвате метода Protect. Този метод не е функция за защита и не криптира документ.

Следващият пример за код показва как да добавите защита с парола към вашия документ:

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());