Редагування документів обмеження

Іноді необхідно обмежити можливість редагування документа і тільки дозволити йому певні дії. Це може бути корисним для запобігання іншим людям з редагування конфіденційної інформації у вашому документі.

Aspose.Words дозволяє обмежити редагування документа шляхом встановлення типу обмеження. Додатково Aspose.Words також дозволяє вказати налаштування захисту запису для документа.

Ця стаття пояснює, як використовувати Aspose.Words вибрати тип обмеження, як додати або видалити захист, і як зробити обмежені редаговані регіони.

Виберіть тип редагування обмеження

Aspose.Words дозволяє контролювати спосіб, який ви обмежите вміст, використовуючи ProtectionType параметр занурення. Це дозволить вам вибрати точний тип захисту, такі як:

Всі типи є паролем, і якщо цей пароль не вводиться правильно, користувач не зможе легально змінити вміст вашого документа. Таким чином, якщо Ваш документ повернеться до Вас без вимог, щоб забезпечити необхідний пароль, це означає, що щось неправильно.

Якщо ви не встановили пароль при виборі типу безпеки, інші користувачі можуть просто ігнорувати захист вашого документа.

Додати захист документів

Додавання захисту вашого документа є простим процесом, оскільки все, що потрібно зробити, це застосувати один з методів захисту, докладних в цьому розділі.

Aspose.Words дозволяє захистити ваші документи від змін Document.protect метод. Цей метод не є функцією безпеки і не шифрує документ.

Приклад коду показує, як додати захист пароля до вашого документа:

import aspose.words as aw

doc = aw.Document()

# Apply document protection.
doc.protect(aw.ProtectionType.NO_PROTECTION, "password")

doc.save(docs_base.artifacts_dir + "DocumentProtection.PasswordProtection.docx");

Наприклад, наступний код показує, як обмежити редагування в документі, щоб тільки редагування у вигляді полів можливо:

import aspose.words as aw

# Insert two sections with some text.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.writeln("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(aw.ProtectionType.ALLOW_ONLY_FORM_FIELDS, "password")

# Save the protected document.
doc.save(docs_base.artifacts_dir + "DocumentProtection.AllowOnlyFormFieldsProtect.docx");

Видалити захист документів

Aspose.Words дозволяє видалити захист з документа простим і прямим документом. Ви можете видалити захист документа, не знаючи фактичного пароля або забезпечити правильний пароль для розблокування документа, використовуючи unprotect метод. Обидва способи видалення не мають різниці.

Приклад коду показує, як видалити захист від вашого документа:

import aspose.words as aw

doc = aw.Document()
builder = aw.DocumentBuilder(doc)

builder.writeln("Text added to a document.")

# Documents can have protection removed either with no password, or with the correct password.
doc.unprotect()
doc.protect(aw.ProtectionType.READ_ONLY, "newPassword")
doc.unprotect("newPassword")

doc.save(docs_base.artifacts_dir + "DocumentProtection.RemoveDocumentProtection.docx");

Вказати необґрунтовані редаговані регіони

Ви можете обмежити редагування вашого документа і одночасно дозволити змінити вибрані частини його. Отже, будь-який, хто відкриває ваш документ, зможе отримати доступ до цих необмежених частин і внести зміни до вмісту.

Aspose.Words дозволяє відмітити деталі, які можна змінити у вашому документі за допомогою start_editable_range і end_editable_range методи.

Наприклад, наступний код показує, як відмітити весь документ, як прочитано, і вказати редаговані регіони в ньому:

import aspose.words as aw

# Upload a document and make it as read-only.
doc = aw.Document(docs_base.my_dir + "Document.docx")
builder = aw.DocumentBuilder(doc)

doc.protect(aw.ProtectionType.READ_ONLY, "MyPassword")

builder.writeln("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.
edRangeStart = builder.start_editable_range()
# An EditableRange object is created for the EditableRangeStart that we just made.
editableRange = edRangeStart.editable_range

# Put something inside the editable range.
builder.writeln("Paragraph inside first editable range")

# An editable range is well-formed if it has a start and an end.
edRangeEnd = builder.end_editable_range()

builder.writeln("This paragraph is outside any editable ranges, and cannot be edited.");

doc.save(docs_base.artifacts_dir + "DocumentProtection.UnrestrictedEditableRegions.docx");

Ви також можете вибрати різні обмеження редагування документів для різних розділів.

Приклад коду показує, як додати обмеження на весь документ, а потім видалити обмеження для одного з розділів:

import aspose.words as aw

# Insert two sections with some text.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)

builder.writeln("Section 1. Unprotected.")
builder.insert_break(aw.BreakType.SECTION_BREAK_CONTINUOUS)
builder.writeln("Section 2. Protected.")

# Section protection only works when document protection is turned and only editing in form fields is allowed.
doc.protect(aw.ProtectionType.ALLOW_ONLY_FORM_FIELDS, "password")

# By default, all sections are protected, but we can selectively turn protection off.
doc.sections[0].protected_for_forms = False
doc.save(docs_base.artifacts_dir + "DocumentProtection.UnrestrictedSection.docx");

doc = aw.Document(docs_base.artifacts_dir + "DocumentProtection.UnrestrictedSection.docx");
self.assertFalse(doc.sections[0].protected_for_forms)
self.assertTrue(doc.sections[1].protected_for_forms);