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 (np. przebudować spis treści), 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, po prostu wywołaj update_fields. Aby zaktualizować pola zawarte w części dokumentu, należy uzyskać obiekt Range i wywołać metodę update_fields. 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ć update_fields 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 update_dirty_fields, aby określić, czy aktualizować pola za pomocą atrybutu brudnego. Gdy wartość aktualizacja_dirty_fields jest ustawiona na True, wszystkie pola posiadające wartość True dla właściwości Field.is_dirty lub FieldChar.is_dirty 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 SaveOptions.update_last_saved_time_property, aby zaktualizować odpowiednią wbudowaną właściwość dokumentu last_saved_time podczas zapisywania dokumentu.

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