필드를 정적 텍스트로 바꾸기

문서를 정적 복사본으로 저장하려는 경우 필드 교체가 필요한 경우가 많습니다. 예를 들어 이메일에 첨부 파일로 보내는 경우입니다. DATE 또는 TIME와 같은 필드를 정적 텍스트로 변환하면 문서가 전송된 날짜와 동일한 날짜를 표시할 수 있습니다. 또한 어떤 상황에서는 문서에서 조건부 IF 필드를 제거하고 대신 가장 최근의 텍스트 결과로 바꿔야 할 수도 있습니다. 예를 들어 IF 필드의 결과를 정적 텍스트로 변환하면 문서의 필드가 업데이트될 때 해당 값이 더 이상 동적으로 변경되지 않습니다.

아래 다이어그램은 IF 필드가 문서에 저장되는 방식을 보여줍니다

  • 텍스트는 특수 필드 노드(FieldStartFieldEnd)로 둘러싸여 있습니다
  • FieldSeparator 노드는 필드 내의 텍스트를 필드 코드와 필드 결과로 분리합니다
  • 필드 코드는 필드의 일반적인 동작을 정의하는 반면, Microsoft Word 또는 Aspose.Words를 사용하여 이 필드를 업데이트할 때 필드 결과는 가장 최근 결과를 유지합니다
  • 필드 결과는 필드에 저장되어 문서를 볼 때 표시되는 내용입니다

update-remove-a-field-aspose-words

데모 프로젝트 “DocumentExplorer”*.*를 사용하여 구조를 계층적 형태로 아래에서 볼 수도 있습니다

update-remove-a-field-aspose-words-2

텍스트로 대체할 수 없는 필드

머리글이나 바닥글의 일부 필드에서는 필드를 정적 텍스트로 바꾸는 것이 제대로 작동하지 않습니다.

예를 들어 머리글이나 바닥글의 PAGE 필드를 정적 텍스트로 변환하려고 하면 모든 페이지에 동일한 값이 표시됩니다. 머리글과 바닥글은 여러 페이지에 걸쳐 반복되며, 필드로 남아 있는 경우 각 페이지에 올바른 결과를 표시하도록 특별히 처리되기 때문입니다.

그러나 헤더에서 PAGE 필드는 정적 텍스트 실행으로 잘 변환됩니다. 이 텍스트 실행은 섹션의 마지막 페이지인 것처럼 평가되며, 이로 인해 헤더의 PAGE 필드가 모든 페이지에 걸쳐 마지막 페이지를 표시하게 됩니다.

다음 코드 예제에서는 필드를 가장 최근 결과로 바꾸는 방법을 보여줍니다

특정 문서 부분의 특정 필드 유형 변환

ConvertFieldsToStaticText 메서드는 CompositeNode 속성과 FieldType 열거라는 두 가지 매개 변수를 허용하므로 모든 복합 노드를 이 메서드에 전달할 수 있습니다. 이를 통해 문서의 특정 부분에서만 필드를 정적 텍스트로 변환할 수 있습니다.

예를 들어 Document 객체를 전달하고 전체 문서에서 지정된 유형의 필드를 정적 텍스트로 변환하거나, 섹션의 Body 객체를 전달하고 해당 본문에 있는 필드만 변환할 수 있습니다.

ConvertFieldsToStaticText 메서드에 전달된 FieldType 열거형은 정적 텍스트로 변환해야 하는 필드 유형을 지정합니다. 문서에 있는 다른 필드 유형은 변경되지 않습니다.

다음 코드 예제에서는 특정 유형(특정 노드의 targetFieldType), compositeNode의 필드를 선택한 다음 이를 정적 텍스트로 변환하는 방법을 보여줍니다

다음 코드 예제에서는 문서의 모든 IF 필드를 정적 텍스트로 변환하는 방법을 보여줍니다

다음 코드 예제에서는 문서 본문의 모든 PAGE 필드를 정적 텍스트로 변환하는 방법을 보여줍니다

다음 코드 예제에서는 마지막 단락의 모든 IF 필드를 정적 텍스트로 변환하는 방법을 보여줍니다