Добавить комментарий к выделенному тексту в документе Word с помощью OpenXML С#

Мне нужно использовать OpenXML для добавления комментариев в текстовый документ. Мне нужно добавить комментарий к месту или слову (или нескольким словам). Обычно в текстовом документе openxml возвращает этот текст как элементы запуска. Но слова, которые я хотел добавить в комментарий, идут с разными элементами запуска. Поэтому я не мог добавить комментарий к словам документа, которые я действительно хотел. Это означает, что я не мог добавить определенные объекты CommentRangeStart и CommentRangeEnd.

Моя текущая реализация, как показано ниже.

foreach (var paragraph in document.MainDocumentPart.Document.Descendants<DocumentFormat.OpenXml.Wordprocessing.Paragraph>())
{
    foreach (var run in paragraph.Elements<Run>())
    {
        var item = run.Elements<Text>().FirstOrDefault(b => b.Text.Trim() == "My words selection to add comment");
        if (item != null)
        {
            run.InsertBefore(new CommentRangeStart() { Id = id }, item);
            var cmtEnd = run.InsertAfter(new CommentRangeEnd() { Id = id }, item);
            run.InsertAfter(new Run(new CommentReference() { Id = id }), cmtEnd);
        }
    }
}

Подробнее..

<w:r><w:t>This </w:t></w:r>

<w:r><w:t>is </w:t></w:r>

<w:r><w:t>a first paragraph</w:t></w:r>

Итак, как я мог добавить комментарий к тексту «является первым абзацем» в этом случае.

Или в некоторых случаях документ openxml содержит элемент запуска, как показано ниже.

<w:r><w:t>This is a first paragraph</w:t></w:r>

Итак, оба этих случая, как добавить комментарий к моему конкретному выбору слов. Я добавил скриншот здесь, что именно то, что я хочу.

скриншот здесь..


person indika    schedule 07.07.2016    source источник


Ответы (1)


Если стиль не отличается и если вам разрешено манипулировать документом, вы можете легко объединить все прогоны в абзаце, а затем изолировать текстовый прогон.

person Silviu Preda    schedule 16.01.2017