Ogranicz edycję dokumentu
Czasami może zaistnieć potrzeba ograniczenia możliwości edycji dokumentu i zezwolenia tylko na określone działania. Może to być przydatne, aby uniemożliwić innym osobom edytowanie wrażliwych i poufnych informacji w dokumencie.
Aspose.Words umożliwia ograniczenie edycji dokumentu poprzez ustawienie typu ograniczenia. Ponadto Aspose.Words umożliwia także określenie ustawień ochrony dokumentu przed zapisem.
W tym artykule wyjaśniono, jak używać Aspose.Words do wybierania typu ograniczenia, jak dodawać lub usuwać ochronę oraz jak tworzyć nieograniczone edytowalne regiony.
Wybierz typ ograniczenia edycji
Aspose.Words pozwala kontrolować sposób ograniczania treści za pomocą parametru wyliczeniowego ProtectionType. Umożliwi to wybranie dokładnego rodzaju ochrony, np. następującego:
- Zezwalaj tylko na komentarze
- Zezwalaj na pola tylko formularzy
- Zezwalaj tylko na wersje
- Tylko czytać
- Bez ochrony
Wszystkie typy są zabezpieczone hasłem i jeśli hasło to nie zostanie wprowadzone poprawnie, użytkownik nie będzie mógł legalnie zmienić treści dokumentu. Jeśli więc Twój dokument zostanie do Ciebie zwrócony bez konieczności podawania niezbędnego hasła, jest to znak, że coś jest nie tak.
Jeśli przy wyborze rodzaju zabezpieczeń nie ustawiłeś hasła, inni użytkownicy mogą po prostu zignorować ochronę Twojego dokumentu.
Dodaj ochronę dokumentów
Dodanie ochrony do dokumentu jest prostym procesem, ponieważ wystarczy zastosować jedną z metod ochrony opisanych szczegółowo w tej sekcji.
Aspose.Words umożliwia zabezpieczenie dokumentów przed zmianami metodą Protect. Ta metoda nie stanowi zabezpieczenia i nie szyfruje dokumentu.
W Microsoft Word możesz ograniczyć edycję w podobny sposób, używając obu:
- Ogranicz edycję (Plik → Informacje → Chroń dokument)
- Alternatywna funkcja – “Ogranicz edycję” (Przejrzyj → Chroń → Ogranicz edycję)
Poniższy przykład kodu pokazuje, jak dodać ochronę hasłem do dokumentu:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
// Apply document protection. | |
doc.Protect(ProtectionType.NoProtection, "password"); | |
doc.Save(ArtifactsDir + "DocumentProtection.PasswordProtection.docx"); |
Poniższy przykład kodu pokazuje, jak ograniczyć edycję w dokumencie, tak aby możliwa była tylko edycja w polach formularza:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// Insert two sections with some text. | |
Document doc = new Document(); | |
DocumentBuilder builder = new 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(ProtectionType.AllowOnlyFormFields, "password"); | |
// Save the protected document. | |
doc.Save(ArtifactsDir + "DocumentProtection.AllowOnlyFormFieldsProtect.docx"); |
Usuń ochronę dokumentów
Aspose.Words umożliwia usunięcie ochrony z dokumentu poprzez prostą i bezpośrednią modyfikację dokumentu. Możesz albo usunąć ochronę dokumentu, nie znając rzeczywistego hasła, albo podać prawidłowe hasło, aby odblokować dokument, korzystając z metody Unprotect. Obydwa sposoby usuwania nie mają żadnej różnicy.
Poniższy przykład kodu pokazuje, jak usunąć ochronę z dokumentu:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
DocumentBuilder builder = new 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(ProtectionType.ReadOnly, "newPassword"); | |
doc.Unprotect("newPassword"); | |
doc.Save(ArtifactsDir + "DocumentProtection.RemoveDocumentProtection.docx"); |
Określ nieograniczone edytowalne regiony
Możesz ograniczyć edycję swojego dokumentu i jednocześnie pozwolić na zmiany w wybranych jego fragmentach. Zatem każdy, kto otworzy Twój dokument, będzie mógł uzyskać dostęp do tych nieograniczonych części i wprowadzić zmiany w treści.
Aspose.Words umożliwia oznaczenie części dokumentu, które można zmienić, przy użyciu metod StartEditableRange i EndEditableRange.
Poniższy przykład kodu pokazuje, jak oznaczyć cały dokument jako tylko do odczytu i określić w nim edytowalne regiony:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// Upload a document and make it as read-only. | |
Document doc = new Document(MyDir + "Document.docx"); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
doc.Protect(ProtectionType.ReadOnly, "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. | |
EditableRangeStart edRangeStart = builder.StartEditableRange(); | |
// An EditableRange object is created for the EditableRangeStart that we just made. | |
EditableRange editableRange = edRangeStart.EditableRange; | |
// 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. | |
EditableRangeEnd edRangeEnd = builder.EndEditableRange(); | |
builder.Writeln("This paragraph is outside any editable ranges, and cannot be edited."); | |
doc.Save(ArtifactsDir + "DocumentProtection.UnrestrictedEditableRegions.docx"); |
Możesz także wybrać różne ograniczenia edycji dokumentu dla różnych sekcji.
Poniższy przykład kodu pokazuje, jak dodać ograniczenie dla całego dokumentu, a następnie usunąć ograniczenie dla jednej z sekcji:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// Insert two sections with some text. | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
builder.Writeln("Section 1. Unprotected."); | |
builder.InsertBreak(BreakType.SectionBreakContinuous); | |
builder.Writeln("Section 2. Protected."); | |
// Section protection only works when document protection is turned and only editing in form fields is allowed. | |
doc.Protect(ProtectionType.AllowOnlyFormFields, "password"); | |
// By default, all sections are protected, but we can selectively turn protection off. | |
doc.Sections[0].ProtectedForForms = false; | |
doc.Save(ArtifactsDir + "DocumentProtection.UnrestrictedSection.docx"); | |
doc = new Document(ArtifactsDir + "DocumentProtection.UnrestrictedSection.docx"); | |
Assert.False(doc.Sections[0].ProtectedForForms); | |
Assert.True(doc.Sections[1].ProtectedForForms); |