Câmpuri de tranziție

Câmpuri tranzitorii

Acest ghid arată cum să lucraţi cu tipurile de câmpuri tranzitorii — coduri de bare moștenite și câmpuri de compatibilitate — în Aspose.Words FOSS pentru .NET.

Aspose.Words FOSS for .NET reprezintă anumite tipuri mai vechi de câmpuri Word printr-un set dedicat de clase în Aspose.Words.Fields spațiul de nume, numit informal transitional câmpuri. Acestea sunt câmpuri care preced echivalentele ulterioare de câmpuri Open XML dar rămân valide în interiorul .docx documentelor deschise din surse moștenite. Fiecare tip de câmp tranzitoriu are propria clasă puternic tipizată care derivă din Field, alături de obiectul generic Field expus de Document.Range.Fields.


Câmpuri cod de bare

Trei clase de câmp generează sau afișează date de cod de bare în interiorul unui document: FieldBarcode (câmpul BARCODE — un cod de bare poștal moștenit cu propriile sale proprietăți PostalAddress, IsBookmark, FacingIdentificationMark și IsUSPostalAddress), FieldDisplayBarcode (câmpul DISPLAYBARCODE), și FieldMergeBarcode (câmpul MERGEBARCODE, care implementează, de asemenea, IMergeFieldSurrogate pentru utilizare în timpul combinării de corespondență). FieldDisplayBarcode și FieldMergeBarcode împărtășesc aceleași proprietăți de configurare a codului de bare cu scop general — BarcodeType, BarcodeValue, SymbolHeight, SymbolRotation, ScalingFactor, ForegroundColor, BackgroundColor, PosCodeStyle, CaseCodeStyle, ErrorCorrectionLevel, DisplayText, AddStartStopChar și FixCheckDigit — proprietăți pe care FieldBarcode nu le are.

Clasa BarcodeParameters este un container de trecere care expune uniunea ambelor seturi de proprietăţi (proprietăţile de adresă poștală și proprietăţile de configurare generală a codului de bare), utilizat pentru a transmite setările unui renderer de cod de bare, iar IBarcodeGenerator este interfaţa pe care o implementează un renderer personalizat, expunând GetBarcodeImage(parameters) și GetOldBarcodeImage(parameters) moştenit. Iteraţi Document.Range.Fields şi verificaţi Field.Type faţă de FieldType.FieldBarcode, FieldType.FieldDisplayBarcode sau FieldType.FieldMergeBarcode pentru a localiza aceste câmpuri, apoi faceţi cast la clasa specifică de câmp — BarcodeValue şi BarcodeType sunt disponibile doar după ce aţi făcut cast la FieldDisplayBarcode sau FieldMergeBarcode, nu la FieldBarcode.


Câmpuri de compatibilitate moștenite

Patru clase suplimentare de câmpuri acoperă coduri de câmp Word mai vechi, care sunt mai puțin comune în documentele create recent, dar apar în continuare în fișierele .docx moștenite: FieldBidiOutline (câmpul BIDIOUTLINE, pentru numerotarea scheletului de la dreapta la stânga), FieldEQ (câmpul ecuație EQ, care expune și AsOfficeMath() pentru a converti conținutul său într-un obiect OfficeMath), FieldFootnoteRef (câmpul FOOTNOTEREF, care face referință încrucișată la o notă de subsol sau de sfârșit), și FieldInfo (câmpul INFO, care citește sau scrie o proprietate de informații sumare ale documentului prin proprietățile sale InfoType și NewValue).

Fiecare dintre aceste clase de câmpuri moștenește aceeași suprafață Field: GetFieldCode() returnează textul codului de bază al câmpului, Update() reevaluează rezultatul câmpului, Unlink() înlocuiește câmpul cu ultimul său rezultat calculat și Remove() șterge câmpul din document. IFieldCodeTokenInfoProvider este implementat de FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode și FieldInfo, deoarece codurile lor de câmp conțin comutatoare structurate dincolo de un simplu șir de instrucțiuni.


Sfaturi și bune practici

  • Verificați întotdeauna Field.Type înainte de a converti un Field generic într-una dintre clasele de câmpuri tranzitorii — o conversie incorectă aruncă un InvalidCastException.
  • Apelați Update() după ce modificați proprietățile unui câmp de cod de bare, astfel încât Result să reflecte noua configurație înainte ca documentul să fie salvat.
  • FieldEQ.AsOfficeMath() reușește numai când câmpul EQ codifică efectiv o ecuație; verificați că Result al câmpului arată ca o formulă înainte de a-l apela.
  • Utilizați Unlink() atunci când doriți să fixați valoarea curentă a unui câmp ca text static, renunțând la posibilitatea de a o recalcula ulterior.
  • Clasele de câmpuri de cod de bare transportă doar date — această ediție FOSS nu include motorul de randare a codurilor de bare, astfel că rezultatul GetBarcodeImage() depinde de implementarea IBarcodeGenerator pe care o furnizați.

Probleme comune

IssueCauseCorectare
InvalidCastException când se face conversia unui FieldS-a presupus greșit FieldTypeVerificați mai întâi Field.Type față de constanta FieldType corespunzătoare
FieldEQ.AsOfficeMath() returnează rezultate neașteptateCâmpul nu conține o instrucțiune de ecuație validăInspectați ieșirea GetFieldCode() înainte de conversie
Câmpul de cod de bare nu are imagine redatăNu a fost furnizată nicio implementare IBarcodeGeneratorFurnizați un generator personalizat care implementează GetBarcodeImage()
Valoarea FieldInfo nu a fost actualizată după modificarea NewValueCâmpul nu a fost reîmprospătatApelați Update() pe câmp după modificarea NewValue

FAQ

Ce înseamnă „transitional” pentru aceste tipuri de câmpuri?

Nu este o terminologie oficială Word — grupează clasele de câmpuri în spațiul de nume Aspose.Words.Fields al acestei ediții, care implementează coduri de câmpuri mai vechi (câmpuri de coduri de bare și compatibilitate pre-Open-XML) prin propriile clase puternic tipizate, în loc să fie gestionate doar prin obiectul generic Field.

Această ediție redă imagini de coduri de bare?

Nu. FieldBarcode, FieldDisplayBarcode și FieldMergeBarcode conțin date de coduri de bare și expun interfața IBarcodeGenerator, dar nicio mașină de redare a codurilor de bare încorporată nu este livrată în această ediție — trebuie să furnizați propria implementare IBarcodeGenerator.

Pot să convertesc un câmp EQ într-o ecuație OfficeMath?

Da, prin FieldEQ.AsOfficeMath(), cu condiția ca codul câmpului să encode efectiv o ecuație.

Cum pot găsi toate câmpurile tranzitorii dintr-un document?

Enumerați Document.Range.Fields și comparați fiecare Field.Type cu constantele relevante FieldType (FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef, FieldInfo).


API Reference Rezumat

Clasă / MetodăDescriere:
FieldBarcodeImplementează câmpul BARCODE
FieldDisplayBarcodeImplementează câmpul DISPLAYBARCODE
FieldMergeBarcodeImplementează câmpul de cod de bare pentru îmbinare de corespondență MERGEBARCODE
BarcodeParametersContainer pentru setările de cod de bare transmise unui generator
IBarcodeGeneratorInterfață pentru un renderer personalizat de imagini de cod de bare
FieldBidiOutlineImplementează câmpul BIDIOUTLINE
FieldEQImplementează câmpul de ecuație EQ; AsOfficeMath() se convertește în OfficeMath
FieldFootnoteRefImplementează câmpul FOOTNOTEREF
FieldInfoImplementează câmpul de proprietate a documentului INFO

Vezi și:

 Română