필드 업데이트

일반적으로Microsoft Word에 삽입된 필드에는 이미 최신 값이 포함되어 있습니다. 예를 들어 필드가 수식 또는 페이지 번호인 경우 지정된 문서 버전에 대한 올바른 계산 값이 포함됩니다. 그러나 두 문서를 병합하거나 데이터로 채우는 것과 같은 필드로 문서를 생성하거나 수정하는 응용 프로그램이 있는 경우 문서가 유용하도록 모든 필드를 업데이트해야 합니다.

필드 업데이트 방법

문서가 로드되면Aspose.Words은Microsoft Word의 동작을 모방하며 필드를 자동으로 업데이트하는 옵션이 꺼집니다. 그 행동은 다음과 같이 요약될 수 있습니다.:

  • 문서를 열거나 저장할 때 필드는 그대로 유지됩니다
  • 문서의 모든 필드를 명시적으로 업데이트할 수 있습니다(예:필요한 경우TOC다시 작성).
  • PDF또는XPS로 인쇄/렌더링할 때 머리글/바닥글의 페이지 번호 매기기와 관련된 필드가 업데이트됩니다
  • Mail Merge을 실행하면 모든 필드가 자동으로 업데이트됩니다

프로그래밍 방식으로 필드 업데이트

전체 문서의 필드를 명시적으로 업데이트하려면UpdateFields메서드를 호출하기만 하면 됩니다. 문서의 일부에 포함된 필드를 업데이트하려면Range개체를 가져와UpdateFields메서드를 호출합니다. Aspose.Words에서는 다음과 같이 문서 트리의 모든 노드에 대해Range를 얻을 수 있습니다Section, HeaderFooter, Paragraph, 그 밖의 GetRange속성을 사용합니다. Update메서드를 호출하여 단일 필드의 결과를 업데이트할 수 있습니다.

렌더링 중 페이지 관련 필드 자동 업데이트

예를 들어PDF또는XPS로 고정 페이지 형식으로 문서 변환을 실행하면Aspose.Words이 문서의 머리글/바닥글에 있는 페이지 레이아웃 관련 필드PAGE,PAGEREF를 자동으로 업데이트합니다. 이 동작은 문서를 인쇄할 때Microsoft Word동작을 모방합니다.

문서의 다른 모든 필드를 업데이트하려면 문서를 렌더링하기 전에UpdateFields을 호출해야 합니다.

다음 예제에서는 문서를 렌더링하기 전에 모든 필드를 업데이트하는 방법을 보여 줍니다:

Mail Merge동안 자동 필드 업데이트

Mail merge을 실행하면 문서의 모든 필드가 자동으로 업데이트됩니다. Mail Merge이 필드 업데이트의 경우이기 때문입니다. 프로그램은Mail Merge필드를 발견하고 그 결과를 업데이트해야 합니다.이는 데이터 소스에서 값을 가져와 필드에 삽입하는 것을 포함합니다. 물론 논리는 더 복잡합니다.예를 들어 문서/mail merge영역의 끝에 도달했지만 병합해야 할 추가 데이터가 있을 때 영역을 복제하고 새로운 필드 세트를 업데이트해야합니다.

더티 속성이 있는 필드 업데이트

문서를 열 때 지정한 필드만 새로 고치는 필드 수준 특성입니다. 다음 번에 문서를 열 때만 이 필드를 새로 고치도록MS단어를 알려줍니다. LoadOptions을 사용할 수 있습니다.setUpdateDirtyFields()속성을 사용하여 필드를 더티 특성으로 업데이트할지 여부를 지정합니다. 때LoadOptions의 값입니다.setUpdateDirtyFields()은true로 설정되어 있으며,Field.IsDirty또는FieldChar.IsDirty속성에 대해true값을 갖는 모든 필드는 문서 로드 시 업데이트됩니다.

다음 코드 예제에서는 더티 특성이 있는 필드를 업데이트하는 방법을 보여 줍니다:

저장하기 전에LastSavedTime속성 업데이트

문서를 저장할 때 해당 기본 제공 문서 속성LastSavedTime을 업데이트할지 여부를UpdateLastSavedTimeProperty속성을 사용할 수 있습니다.

다음 코드 예제에서는 이 속성을 업데이트하는 방법을 보여 줍니다: