Aktualizuj pola

Zazwyczaj pole wstawione do Microsoft Word zawiera już aktualną wartość. Przykładowo, jeśli polem jest formuła lub numer strony, będzie ona zawierać poprawną wyliczoną wartość dla danej wersji dokumentu. Jeśli jednak masz aplikację, która generuje lub modyfikuje dokument za pomocą pól, na przykład łącząc dwa dokumenty lub wypełniając go danymi, w idealnym przypadku wszystkie pola muszą zostać zaktualizowane, aby dokument był użyteczny.

Jak zaktualizować pola

Po załadowaniu dokumentu Aspose.Words naśladuje zachowanie Microsoft Word z wyłączoną opcją automatycznej aktualizacji pól. Zachowanie można podsumować w następujący sposób:

  • po otwarciu/zapisaniu dokumentu pola pozostają nienaruszone
  • możesz jawnie zaktualizować wszystkie pola w dokumencie, na przykład przebudować TOC, kiedy zajdzie taka potrzeba
  • podczas drukowania/renderowania do formatu PDF lub XPS, pola związane z numeracją stron w nagłówkach/stopkach są aktualizowane
  • po uruchomieniu mail merge wszystkie pola są aktualizowane automatycznie

Aktualizuj pola programowo

Aby jawnie zaktualizować pola w całym dokumencie, wystarczy wywołać metodę UpdateFields. Aby zaktualizować pola zawarte w części dokumentu, należy uzyskać obiekt Range i wywołać metodę UpdateFields. W Aspose.Words możesz uzyskać Range dla dowolnego węzła w drzewie dokumentu, takiego jak Section, HeaderFooter, Paragraph itp., używając właściwości Node.Range. Możesz zaktualizować wynik pojedynczego pola, wywołując metodę Update.

Automatyczna aktualizacja pól związanych ze stroną podczas renderowania

W przypadku konwersji dokumentu do formatu o stałej stronie np. do PDF lub XPS, Aspose.Words automatycznie zaktualizuje pola związane z układem strony PAGE, PAGEREF znajdujące się w nagłówkach/stopkach dokumentu. To zachowanie naśladuje zachowanie Microsoft Word podczas drukowania dokumentu.

Jeśli chcesz zaktualizować wszystkie pozostałe pola w dokumencie, musisz wywołać UpdateFields przed wyrenderowaniem dokumentu.

Poniższy przykład kodu pokazuje, jak zaktualizować wszystkie pola przed wyrenderowaniem dokumentu:

Automatyczna aktualizacja pola podczas Mail Merge

Po wykonaniu mail merge wszystkie pola w dokumencie zostaną automatycznie zaktualizowane. Dzieje się tak, ponieważ mail merge jest przypadkiem aktualizacji w terenie. Program natrafia na pole mail merge i musi zaktualizować jego wynik, co polega na pobraniu wartości ze źródła danych i wstawieniu jej do pola. Logika jest oczywiście bardziej skomplikowana, np. gdy osiągnięty zostanie koniec dokumentu/regionu mail merge, ale nadal pozostają dalsze dane do połączenia, wówczas region należy zduplikować i zaktualizować nowy zestaw pól.

Zaktualizuj pola mające brudny atrybut

W:dirty to atrybut na poziomie pola, który po otwarciu dokumentu odświeży tylko określone pole. Informuje MS Word, aby tylko odświeżył to pole przy następnym otwarciu dokumentu. Możesz użyć właściwości UpdateDirtyFields, aby określić, czy aktualizować pola za pomocą atrybutu brudnego. Gdy wartość UpdateDirtyFields jest ustawiona na true, wszystkie pola posiadające wartość true dla właściwości Field.IsDirty lub FieldChar.IsDirty są aktualizowane podczas ładowania dokumentu.

Poniższy przykład kodu pokazuje, jak zaktualizować pola posiadające atrybut dirty:

Zaktualizuj właściwość LastSavedTime przed zapisaniem

Możesz użyć właściwości UpdateLastSavedTimeProperty, aby zaktualizować odpowiednią wbudowaną właściwość dokumentu LastSavedTime podczas zapisywania dokumentu.

Poniższy przykład kodu pokazuje, jak zaktualizować tę właściwość: