EvotecIT / OfficeIMO

Fast and easy to use cross-platform .NET library that creates or modifies Microsoft Word (DocX) and later also Excel (XLSX) files without installing any software. Library is based on Open XML SDK
MIT License
286 stars 50 forks source link

Add support for WriteProtection (Always Read Only) and MarkAsFinal settings #163

Closed PrzemyslawKlys closed 9 months ago

PrzemyslawKlys commented 1 year ago

This PR fixes:

AlwaysOpenReadOnly

internal static void Example_ProtectAlwaysReadOnly(string folderPath, bool openWord) {
    Console.WriteLine("[*] Creating standard document with protection 'Always Read Only'");
    string filePath = System.IO.Path.Combine(folderPath, "Basic Document with always read only protection.docx");
    using (WordDocument document = WordDocument.Create(filePath)) {
        var paragraph = document.AddParagraph("Basic paragraph - Page 4");
        paragraph.ParagraphAlignment = JustificationValues.Center;
        paragraph.Color = SixLabors.ImageSharp.Color.Blue;
        paragraph.AddText(" This is continutation in the same line");

        Console.WriteLine("Always read only: " + document.Settings.AlwaysOpenReadOnly);

        document.Settings.AlwaysOpenReadOnly = true;

        Console.WriteLine("Always read only: " + document.Settings.AlwaysOpenReadOnly);

        document.Save(true);
    }
}

FinalDocument

internal static void Example_ProtectFinalDocument(string folderPath, bool openWord) {
    Console.WriteLine("[*] Creating basic document with protection - Final Document");
    string filePath = System.IO.Path.Combine(folderPath, "Basic Document with setting Word to Final Document.docx");
    using (WordDocument document = WordDocument.Create(filePath)) {
        var paragraph = document.AddParagraph("Basic paragraph - Page 1");
        paragraph.ParagraphAlignment = JustificationValues.Center;
        paragraph.Color = SixLabors.ImageSharp.Color.Blue;
        paragraph.AddText(" This is continutation in the same line");
        paragraph.AddBreak(BreakValues.TextWrapping);

        Console.WriteLine("Final document: " + document.Settings.FinalDocument);

        document.Settings.FinalDocument = true;

        Console.WriteLine("Final document: " + document.Settings.FinalDocument);

        document.Save(openWord);
    }
}