필드를 정적 텍스트로 바꾸기
문서를 정적 복사본으로 저장하려는 경우 필드 교체가 필요한 경우가 많습니다. 예를 들어,전자 메일에 첨부 파일로 보낼 때. DATE
또는TIME
과 같은 필드를 정적 텍스트로 변환하면 문서가 보낸 날짜와 동일한 날짜를 표시할 수 있습니다. 또한 경우에 따라 문서에서 조건부IF
필드를 제거하고 대신 가장 최근의 텍스트 결과로 바꾸어야 할 수도 있습니다. 예를 들어IF
필드의 결과를 정적 텍스트로 변환하면 문서의 필드가 업데이트될 때 값이 더 이상 동적으로 변경되지 않습니다.
아래 다이어그램은IF
필드가 문서에 저장되는 방법을 보여 줍니다:
- 텍스트는 특수 필드 노드(FieldStart및FieldEnd)로 둘러싸여 있습니다
- FieldSeparator노드는 필드 내의 텍스트를 필드 코드 및 필드 결과로 구분합니다
- 필드 코드는 필드의 일반적인 동작을 정의하지만 필드 결과는Microsoft Word또는Aspose.Words를 사용하여 이 필드를 업데이트할 때 가장 최근의 결과를 유지합니다
- 필드 결과는 필드에 저장되어 볼 때 문서에 표시되는 것입니다
구조는 또한Aspose.Words설치 프로그램과 함께 제공되는 데모 프로젝트**“DocumentExplorer”**을 사용하여 계층적 형태로 아래에서 볼 수 있습니다.
텍스트로 바꿀 수 없는 필드
필드를 정적 텍스트로 바꾸면 머리글이나 바닥글의 일부 필드에 대해 제대로 작동하지 않습니다.
예를 들어 머리글이나 바닥글의PAGE
필드를 정적 텍스트로 변환하면 모든 페이지에 동일한 값이 표시됩니다. 머리글과 바닥글이 여러 페이지에 걸쳐 반복되고 필드로 유지되면 각 페이지에 대한 올바른 결과를 표시하도록 처리되기 때문입니다.
그러나 헤더에서PAGE
필드는 정적 텍스트 실행으로 잘 변환됩니다. 이 텍스트 실행은 섹션의 마지막 페이지인 것처럼 평가되므로 헤더의PAGE
필드에 모든 페이지에 마지막 페이지가 표시됩니다.
다음 코드 예제에서는 필드를 최신 결과로 바꾸는 방법을 보여 줍니다:
특정 문서 파트의 특정 필드 유형 변환
ConvertFieldsToStaticText메서드는CompositeNode속성과FieldType열거형이라는 두 개의 매개 변수를 허용하므로 이 메서드에 모든 복합 노드를 전달할 수 있습니다. 이렇게 하면 문서의 특정 부분에서만 필드를 정적 텍스트로 변환할 수 있습니다.
예를 들어Document개체를 전달하고 지정된 유형의 필드를 전체 문서에서 정적 텍스트로 변환하거나 섹션의Body개체를 전달하고 해당 본문에 있는 필드만 변환할 수 있습니다.
ConvertFieldsToStaticText메서드에 전달된FieldType열거형은 정적 텍스트로 변환해야 하는 필드 유형을 지정합니다. 문서에 있는 다른 필드 유형은 변경되지 않습니다.
다음 코드 예제에서는 특정 유형의 필드(targetFieldType)를 특정 노드에서compositeNode으로 선택한 다음 정적 텍스트로 변환하는 방법을 보여 줍니다:
다음 코드 예제에서는 문서의 모든IF
필드를 정적 텍스트로 변환하는 방법을 보여 줍니다:
다음 코드 예제에서는 문서 본문에 있는 모든PAGE
필드를 정적 텍스트로 변환하는 방법을 보여 줍니다:
다음 코드 예제에서는 마지막 단락의 모든IF
필드를 정적 텍스트로 변환하는 방법을 보여 줍니다: