전환 필드
전환 필드
이 가이드는 Aspose.Words FOSS for .NET에서 전환 필드 유형 — 레거시 바코드 및 호환성 필드 — 작업 방법을 보여줍니다.
Aspose.Words FOSS for .NET는 전용 클래스 집합을 통해 특정 오래된 Word 필드 유형을 나타냅니다. Aspose.Words.Fields 네임스페이스, 비공식적으로는 transitional 필드. 이들은 나중에 등장한 Open XML 필드와 동등한 필드보다 먼저 존재했지만, 내부에서 여전히 유효합니다. .docx 레거시 소스에서 열린 문서들. 각 전환 필드 유형은 자체적으로 강력히 타입이 지정된 클래스를 상속받습니다. Field, 일반적인 Field 객체가 노출되는 Document.Range.Fields.
바코드 필드
문서 내부에서 바코드 데이터를 생성하거나 표시하는 세 가지 필드 클래스가 있습니다: FieldBarcode (BARCODE 필드 — 자체 PostalAddress, IsBookmark, FacingIdentificationMark, IsUSPostalAddress 속성을 가진 레거시 우편 바코드), FieldDisplayBarcode (DISPLAYBARCODE 필드), 및 FieldMergeBarcode (MERGEBARCODE 필드, 메일 병합 중에 사용하기 위해 IMergeFieldSurrogate도 구현합니다). FieldDisplayBarcode와 FieldMergeBarcode는 동일한 범용 바코드 구성 속성 — BarcodeType, BarcodeValue, SymbolHeight, SymbolRotation, ScalingFactor, ForegroundColor, BackgroundColor, PosCodeStyle, CaseCodeStyle, ErrorCorrectionLevel, DisplayText, AddStartStopChar, 및 FixCheckDigit — 을 공유하며, 이 속성은 FieldBarcode에 없습니다.
BarcodeParameters 클래스는 두 속성 집합(우편 주소 속성과 일반 바코드 구성 속성)의 결합을 노출하는 패스스루 컨테이너이며, 바코드 렌더러에 설정을 전달하는 데 사용됩니다. IBarcodeGenerator은 사용자 정의 렌더러가 구현하는 인터페이스로, GetBarcodeImage(parameters)와 레거시 GetOldBarcodeImage(parameters)을 노출합니다. Document.Range.Fields를 반복하고 Field.Type를 FieldType.FieldBarcode, FieldType.FieldDisplayBarcode 또는 FieldType.FieldMergeBarcode와 비교하여 해당 필드를 찾은 다음, 특정 필드 클래스로 캐스팅합니다 — BarcodeValue와 BarcodeType은 FieldDisplayBarcode 또는 FieldMergeBarcode로 캐스팅한 후에만 사용할 수 있으며, FieldBarcode에서는 사용할 수 없습니다.
레거시 호환성 필드
네 개의 추가 필드 클래스는 새로 작성된 문서에서는 덜 흔하지만 레거시 .docx 파일에 여전히 나타나는 오래된 Word 필드 코드를 다룹니다: FieldBidiOutline(BIDIOUTLINE 필드로, 오른쪽-왼쪽 개요 번호 매기기를 위해), FieldEQ(EQ 수식 필드이며, 또한 AsOfficeMath()를 노출시켜 그 내용을 OfficeMath 객체로 변환합니다), FieldFootnoteRef(FOOTNOTEREF 필드로, 각주 또는 미주 표식을 교차 참조합니다), 및 FieldInfo(INFO 필드로, InfoType 및 NewValue 속성을 통해 문서 요약 정보 속성을 읽거나 씁니다).
이러한 모든 필드 클래스는 동일한 Field 인터페이스를 상속합니다: GetFieldCode()은 필드의 기본 코드 텍스트를 반환하고, Update()는 필드 결과를 다시 평가하며, Unlink()은 필드를 마지막으로 계산된 결과로 교체하고, Remove()는 문서에서 해당 필드를 삭제합니다. IFieldCodeTokenInfoProvider는 FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldInfo에 의해 구현되며, 이들의 필드 코드는 단순 명령 문자열을 넘어 구조화된 스위치를 포함하고 있기 때문입니다.
팁 및 모범 사례
- 제네릭
Field을 전환 필드 클래스 중 하나로 캐스팅하기 전에 항상Field.Type을 확인하세요 — 잘못된 캐스팅은InvalidCastException를 발생시킵니다. - 바코드 필드의 속성을 변경한 후
Update()을 호출하여Result이 문서를 저장하기 전에 새로운 구성을 반영하도록 합니다. FieldEQ.AsOfficeMath()은 EQ 필드가 실제로 수식을 인코딩할 때만 성공합니다; 호출하기 전에 필드의Result이 수식 형태인지 확인하세요.- 필드의 현재 값을 정적인 텍스트로 고정하고 이후에 재계산할 수 있는 기능을 버리고 싶을 때
Unlink()을 사용하세요. - 바코드 필드 클래스는 데이터만 포함합니다 — 이 FOSS 에디션에는 바코드 렌더링 엔진이 포함되어 있지 않으므로
GetBarcodeImage()출력은 사용자가 제공하는IBarcodeGenerator구현에 따라 달라집니다.
공통 문제
| 이슈 | 원인 | 수정 |
|---|---|---|
InvalidCastException을(를) Field으로 캐스팅할 때 | 잘못된 FieldType이 가정됨 | 먼저 일치하는 FieldType 상수와 Field.Type를 확인하세요 |
FieldEQ.AsOfficeMath()이(가) 예상치 못한 결과를 반환합니다 | 필드에 유효한 방정식 명령이 포함되어 있지 않습니다 | 변환 전에 GetFieldCode() 출력값을 검사하세요 |
| 바코드 필드에 렌더링된 이미지가 없습니다 | 제공된 IBarcodeGenerator 구현이 없습니다 | GetBarcodeImage()을 구현하는 사용자 정의 생성기를 제공하십시오 |
NewValue 변경 후 FieldInfo 값이 업데이트되지 않음 | 필드가 새로 고쳐지지 않음 | NewValue을(를) 수정한 후 필드에 Update()를 호출하십시오 |
FAQ
“transitional"이 이러한 필드 유형에 대해 의미하는 바는 무엇입니까?
공식적인 Word 용어가 아니라 — 이 버전의 Aspose.Words.Fields 네임스페이스에서 필드 클래스를 그룹화하여, 구식 필드 코드(바코드 및 pre-Open-XML 호환성 필드)를 자체 강력 타입 클래스를 통해 구현하고, 일반적인 Field 객체만으로 처리되지 않도록 합니다.
이 버전은 바코드 이미지를 렌더링합니까?
아니요. FieldBarcode, FieldDisplayBarcode, 및 FieldMergeBarcode는 바코드 데이터를 보유하고 IBarcodeGenerator 인터페이스를 노출하지만, 이 버전에는 내장 바코드 렌더링 엔진이 제공되지 않습니다 — 직접 IBarcodeGenerator 구현을 제공해야 합니다.
EQ 필드를 OfficeMath 방정식으로 변환할 수 있나요?
예, FieldEQ.AsOfficeMath()를 통해 가능합니다. 단, 필드 코드가 실제로 방정식을 인코딩하고 있어야 합니다.
문서에서 모든 전이 필드를 어떻게 찾나요?
Document.Range.Fields을 열거하고 각 Field.Type를 해당 FieldType 상수(FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef, FieldInfo)와 비교합니다.
API Reference 요약
| 클래스 / 메서드 | 설명 |
|---|---|
FieldBarcode | BARCODE 필드를 구현합니다 |
FieldDisplayBarcode | DISPLAYBARCODE 필드를 구현합니다 |
FieldMergeBarcode | MERGEBARCODE 메일 병합 바코드 필드를 구현합니다 |
BarcodeParameters | 생성기에 전달되는 바코드 설정을 위한 컨테이너 |
IBarcodeGenerator | 커스텀 바코드 이미지 렌더러를 위한 인터페이스 |
FieldBidiOutline | BIDIOUTLINE 필드를 구현합니다 |
FieldEQ | EQ 방정식 필드를 구현합니다; AsOfficeMath()은 OfficeMath로 변환됩니다 |
FieldFootnoteRef | FOOTNOTEREF 필드를 구현합니다 |
FieldInfo | 문서 속성 필드인 INFO을 구현합니다 |