Как заблокировать отслеживание изменений (с помощью пароля) в слове 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);
}
}