Робота з коментарями

Aspose.Words дозволяє користувачам працювати з коментарями – коментарі в документі в Aspose.Words представлені класом Comment. Також використовуйте класи CommentRangeStart та CommentRangeEnd, щоб вказати область тексту, яка повинна бути пов’язана з коментарем.

Додати коментар

Aspose.Words дозволяє додавати коментарі кількома способами:

  1. Використання класу Comment
  2. Використання класів CommentRangeStart та CommentRangeEnd

Наступний приклад коду показує, як Додати коментар до абзацу за допомогою класу Comment:

Наступний приклад коду показує, як Додати коментар до абзацу, використовуючи область тексту та класи CommentRangeStart та CommentRangeEnd:

Витягувати або видаляти коментарі

Використання коментарів у документі Word (на додаток до відстеження змін) є звичайною практикою при перегляді документів, особливо за наявності кількох рецензентів. Можуть виникнути ситуації, коли єдине, що вам потрібно від документа, - це Коментарі. Скажімо, ви хочете скласти список результатів перевірки, або, можливо, ви зібрали всю корисну інформацію з документа і просто хочете видалити непотрібні коментарі. Можливо, ви захочете переглянути або видалити коментарі конкретного рецензента.

У цьому прикладі ми розглянемо кілька простих методів як збору інформації з коментарів у документі, так і видалення коментарів із документа. Зокрема, ми розглянемо, як:

  • Витягніть Усі Коментарі з документа або лише ті, які були зроблені конкретним автором.
  • Видаліть усі коментарі з документа або лише від певного автора.

Як витягти або видалити коментарі

Код у цьому прикладі насправді досить простий, і всі методи базуються на одному підході. Коментар у документі Word представлений об’єктом Comment в об’єктній моделі документа Aspose.Words. Щоб зібрати всі коментарі в документі, використовуйте метод GetChildNodes з першим параметром NodeType.Comment. Переконайтеся, що для другого параметра методу GetChildNodes встановлено значення true: це змушує метод GetChildNodes рекурсивно вибирати з усіх дочірніх вузлів, а не збирати лише безпосередні дочірні вузли.

Щоб проілюструвати, як витягувати та видаляти коментарі з документа, ми виконаємо наступні кроки:

  1. Відкрийте документ Word за допомогою класу Document
  2. Зібрати всі коментарі з документа в колекцію
  3. Щоб витягти коментарі:
    1. Переглядайте колекцію за допомогою оператора foreach
    2. Витягніть та вкажіть ім’я автора, дату та час, а також текст усіх коментарів
    3. Витягніть і вкажіть ім’я автора, дату і час, а також текст коментарів, написаних конкретним автором, в даному випадку автором ks
  4. Щоб видалити коментарі:
    1. Пройдіться в зворотному порядку по колекції, використовуючи для оператора
    2. Видалити коментарі
  5. Збережіть зміни

Як витягти всі коментарі

Метод GetChildNodes дуже корисний, і ви можете використовувати його щоразу, коли Вам потрібно отримати список вузлів документа будь-якого типу. Отримана колекція не створює негайних додаткових витрат, оскільки вузли вибираються до цієї колекції лише під час переліку елементів у ній або доступу до них.

Наступний приклад коду показує, як витягти ім’я автора, дату та час, а також текст усіх коментарів у документі:

Як витягти коментарі зазначеного автора

Після того, як ви виділили вузли коментарів до колекції, вам залишається лише витягти необхідну інформацію. У цьому прикладі ініціали автора, дата, час та звичайний текст коментаря об’єднані в один рядок; ви можете зберегти їх іншим способом.

Перевантажений метод, який отримує коментарі від певного автора, майже однаковий, він просто перевіряє ім’я автора, перш ніж додавати інформацію до масиву.

Наступний приклад коду показує, як витягти ім’я автора, дату та час, а також текст коментарів зазначеного автора:

Як видалити коментарі

Якщо ви видаляєте всі коментарі, немає необхідності переміщатися по колекції, видаляючи Коментарі один за одним; ви можете видалити їх, викликавши команду NodeCollection.Clear у колекції коментарів.

Наступний приклад коду показує, як видалити всі коментарі в документі:

Коли Вам потрібно вибірково видалити коментарі, процес стає більш схожим на код, який ми використовували для вилучення коментарів.

Наступний приклад коду показує, як видалити коментарі зазначеного автора:

Головне, на що слід звернути увагу, - це використання оператора for. На відміну від простого вилучення, тут ви хочете видалити коментар. Підходящим трюком є ітерація збору даних у зворотному порядку від останнього коментаря до першого. Причиною цього є те, що якщо ви починаєте з кінця і рухаєтесь назад, Індекс попередніх елементів залишається незмінним, і ви можете повернутися до першого елемента в колекції.

Наступний приклад коду показує методи вилучення та видалення коментарів:

Як видалити коментар між CommentRangeStart та CommentRangeEnd

Використовуючи Aspose.Words, ви також можете видалити коментарі між вузлами CommentRangeStart та CommentRangeEnd.

Наступний приклад коду показує, як видалити текст між CommentRangeStart та CommentRangeEnd:

Додавання та видалення відповіді на коментар

Метод AddReply додає відповідь до цього коментаря. Будь ласка, зверніть увагу, що через існуючі обмеження Microsoft Office у документі дозволено лише 1 рівень відповідей. При виклику цього методу для існуючого коментаря до відповіді буде викликано виняток типу InvalidOperationException.

Ви можете використовувати метод RemoveReply, щоб видалити вказану відповідь на цей коментар.

Наступний зразок коду показує, як додати відповідь до коментаря та видалити відповідь на коментар:

Прочитайте відповідь на коментар

Властивість Replies повертає колекцію об’єктів Comment, Які є безпосередніми дочірніми елементами зазначеного коментаря.

Наступний приклад коду показує, як перебирати відповіді на коментарі та вирішувати їх: