Обновлять поля

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

Как обновить поля

Когда документ загружен, Aspose.Words имитирует поведение Microsoft Word, при этом функция автоматического обновления полей отключена. Поведение можно резюмировать следующим образом:

  • когда вы открываете/сохраняете документ, поля остаются нетронутыми
  • вы можете явно обновить все поля в документе, например, перестроить TOC, когда вам нужно
  • при рендеринге в PDF или XPS поля, относящиеся к нумерации страниц в верхних и нижних колонтитулах, обновляются
  • когда вы выполняете mail merge, все поля обновляются автоматически

Обновлять поля программным способом

Чтобы явно обновить поля во всем документе, просто вызовите метод UpdateFields. Чтобы обновить поля, содержащиеся в части документа, получите объект Range и вызовите метод UpdateFields. В Aspose.Words вы можете получить значение Range для любого узла в дереве документа, например Section, HeaderFooter, Paragraph, и т.д., используя свойство Node.Range.Вы можете обновить результат для отдельного поля, вызвав метод Update.

Автоматическое обновление полей, связанных со страницей, во время рендеринга

Когда вы выполняете преобразование документа в формат фиксированной страницы, например, в PDF или XPS, в Aspose.Words автоматически обновляются поля, связанные с макетом страницы PAGE, PAGEREF, которые находятся в верхних и нижних колонтитулах документа. Это поведение имитирует поведение Microsoft Word при печати документа.

Если вы хотите обновить все остальные поля в документе, вам нужно вызвать UpdateFields перед отображением документа.

В следующем примере кода показано, как обновить все поля перед отрисовкой документа:

Автоматическое обновление поля Во время Mail Merge

Когда вы выполняете команду mail merge, все поля в документе будут автоматически обновлены. Это связано с тем, что Mail Merge - это случай обновления поля. Программа обнаруживает поле Mail Merge и должна обновить свой результат, что включает в себя получение значения из источника данных и вставку его в поле. Логика, конечно, более сложная, например, когда достигнут конец области документа/mail merge, но есть еще дополнительные данные, которые необходимо объединить, тогда область необходимо продублировать и обновить новый набор полей.

Обновите свойство LastSavedTime Перед сохранением

Вы можете использовать свойство UpdateLastSavedTimeProperty для обновления соответствующего встроенного свойства документа LastSavedTime при сохранении документа.

В следующем примере кода показано, как обновить это свойство: