Как заблокировать отслеживание изменений (с помощью пароля) в слове 2013 с помощью C#?

Я знаю, что есть несколько подходов к созданию / модификации docx в C#

OpenXML, DocX API и т. Д.

Я выяснил, как включить отслеживаемые изменения с помощью Open XML, просто не понял, как заблокировать отслеживаемые изменения (особенность в Word 2013).

2 ответа

Посмотрите, как установить ограничения на редактирование в Word, используя Open XML SDK 2.0

У меня нет рабочего кода для вас, но хеш пароля должен храниться в DocumentProtection.Hash, Надеюсь, что этот совет поможет вам двигаться вперед!

Этот код прекрасно работает для меня:

static void Main(string[] args)
{
    using (var document = WordprocessingDocument.Open(@"D:\DocTest\Test1.docx", true))
    {
        AddTrackingLock(document);
    }
}

private static void AddTrackingLock(WordprocessingDocument document)
{
    var documentSettings = document.MainDocumentPart.DocumentSettingsPart;
    var documentProtection = documentSettings
                                .Settings
                                .FirstOrDefault(it =>
                                        it is DocumentProtection &&
                                        (it as DocumentProtection).Edit == DocumentProtectionValues.TrackedChanges)
                                as DocumentProtection;

    if (documentProtection == null)
    {
        var documentProtectionElement = new DocumentProtection();
        documentProtectionElement.Edit = DocumentProtectionValues.TrackedChanges;
        documentProtectionElement.Enforcement = OnOffValue.FromBoolean(true);
        documentSettings.Settings.AppendChild(documentProtectionElement);
    }
    else
    {
        documentProtection.Enforcement = OnOffValue.FromBoolean(true);
    }
}
Другие вопросы по тегам