Transitievelden

Transitievelden

Deze gids toont hoe je met transitie-veldtypen — legacy barcode- en compatibiliteitsvelden — werkt in Aspose.Words FOSS voor .NET.

Aspose.Words FOSS voor .NET vertegenwoordigt bepaalde oudere Word-veldtypen via een toegewijde set klassen in de Aspose.Words.Fields namespace, informeel genoemd transitional velden. Dit zijn velden die ouder zijn dan latere Open XML veldequivalenten, maar toch geldig blijven binnen .docx documenten die geopend zijn vanuit legacy-bronnen. Elk overgangsveldtype heeft zijn eigen sterk-getypeerde klasse die afgeleid is van Field, naast de generieke Field object dat wordt blootgesteld door Document.Range.Fields.


Barcode-velden

Drie veldklassen genereren of tonen barcode-gegevens binnen een document: FieldBarcode (het BARCODE veld — een legacy postbarcode met zijn eigen PostalAddress, IsBookmark, FacingIdentificationMark en IsUSPostalAddress eigenschappen), FieldDisplayBarcode (het DISPLAYBARCODE veld), en FieldMergeBarcode (het MERGEBARCODE veld, dat ook IMergeFieldSurrogate implementeert voor gebruik tijdens mail merge). FieldDisplayBarcode en FieldMergeBarcode delen dezelfde algemene barcode-configuratie-eigenschappen — BarcodeType, BarcodeValue, SymbolHeight, SymbolRotation, ScalingFactor, ForegroundColor, BackgroundColor, PosCodeStyle, CaseCodeStyle, ErrorCorrectionLevel, DisplayText, AddStartStopChar en FixCheckDigit — eigenschappen die FieldBarcode niet heeft.

De BarcodeParameters klasse is een doorgeefcontainer die de unie van beide eigenschapsets (de postadres-eigenschappen en de algemene barcode-configuratie-eigenschappen) blootlegt, gebruikt om instellingen door te geven aan een barcode-renderer, en IBarcodeGenerator is de interface die een aangepaste renderer implementeert, met GetBarcodeImage(parameters) en de legacy GetOldBarcodeImage(parameters). Doorloop Document.Range.Fields en controleer Field.Type tegen FieldType.FieldBarcode, FieldType.FieldDisplayBarcode of FieldType.FieldMergeBarcode om deze velden te vinden, cast vervolgens naar de specifieke veldklasse — BarcodeValue en BarcodeType zijn alleen beschikbaar na het casten naar FieldDisplayBarcode of FieldMergeBarcode, niet FieldBarcode.


Legacy-compatibiliteitsvelden

Vier extra veldklassen dekken oudere Word-veldcodes die minder vaak voorkomen in nieuw aangemaakte documenten, maar nog steeds verschijnen in legacy .docx bestanden: FieldBidiOutline (het BIDIOUTLINE veld, voor rechts-naar-links outline nummering), FieldEQ (het EQ vergelijkingsveld, dat ook AsOfficeMath() blootlegt om de inhoud te converteren naar een OfficeMath object), FieldFootnoteRef (het FOOTNOTEREF veld, dat naar een voetnoot- of eindnootmarkering verwijst), en FieldInfo (het INFO veld, dat een samenvattende documentinformatie-eigenschap leest of schrijft via zijn InfoType en NewValue eigenschappen).

Elk van deze veldklassen erft hetzelfde Field oppervlak: GetFieldCode() geeft de onderliggende code-tekst van het veld terug, Update() evalueert het resultaat van het veld opnieuw, Unlink() vervangt het veld door zijn laatst berekende resultaat, en Remove() verwijdert het veld uit het document. IFieldCodeTokenInfoProvider wordt geïmplementeerd door FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode en FieldInfo, omdat hun veldcodes gestructureerde switches bevatten die verder gaan dan een eenvoudige instructiestring.


Tips en best practices

  • Controleer altijd Field.Type voordat je een generieke Field naar een van de overgangsveldklassen cast — een onjuiste cast veroorzaakt een InvalidCastException.
  • Roep Update() aan na het wijzigen van de eigenschappen van een barcodeveld zodat Result de nieuwe configuratie weerspiegelt voordat het document wordt opgeslagen.
  • FieldEQ.AsOfficeMath() slaagt alleen wanneer het EQ-veld daadwerkelijk een vergelijking codeert; controleer of de Result van het veld eruitziet als een formule voordat je het aanroept.
  • Gebruik Unlink() wanneer je de huidige waarde van een veld wilt bevriezen als statische tekst, waarbij je de mogelijkheid om het later opnieuw te berekenen opgeeft.
  • Barcode-veldklassen dragen alleen data — deze FOSS-editie bevat niet de barcode-renderingengine, dus de uitvoer van GetBarcodeImage() hangt af van de IBarcodeGenerator implementatie die je levert.

Veelvoorkomende problemen

IssueCauseOplossen
InvalidCastException bij het casten van een FieldVerkeerde FieldType aangenomenControleer Field.Type eerst tegen de bijbehorende FieldType constante
FieldEQ.AsOfficeMath() geeft onverwachte resultatenVeld bevat geen geldige vergelijking-instructieInspecteer GetFieldCode() output vóór conversie
Barcode-veld heeft geen gerenderde afbeeldingGeen IBarcodeGenerator implementatie opgegevenVoorzie een aangepaste generator die GetBarcodeImage() implementeert
Waarde van FieldInfo niet bijgewerkt na wijziging van NewValueVeld niet vernieuwdRoep Update() aan op het veld na het wijzigen van NewValue

FAQ

Wat betekent “transitional” voor deze veldtypen?

Het is geen officiële Word-terminologie — het groepeert veldklassen in de Aspose.Words.Fields namespace van deze editie die oudere veldcodes (barcode en pre-Open-XML compatibiliteitsvelden) via hun eigen sterk getypeerde klassen implementeren in plaats van alleen via het generieke Field object.

Renderen deze editie barcode-afbeeldingen?

Nee. FieldBarcode, FieldDisplayBarcode en FieldMergeBarcode bevatten barcode-gegevens en exposeren de IBarcodeGenerator-interface, maar er wordt geen ingebouwde barcode-renderengine meegeleverd in deze editie — u levert uw eigen IBarcodeGenerator-implementatie.

Kan ik een EQ-veld converteren naar een OfficeMath-vergelijking?

Ja, via FieldEQ.AsOfficeMath(), op voorwaarde dat de code van het veld daadwerkelijk een vergelijking codeert.

Hoe vind ik alle overgangsvelden in een document?

Enumereer Document.Range.Fields en vergelijk elke Field.Type met de relevante FieldType-constanten (FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef, FieldInfo).


API Reference Samenvatting

Klasse / MethodeBeschrijving
FieldBarcodeImplementeert het BARCODE veld
FieldDisplayBarcodeImplementeert het DISPLAYBARCODE veld
FieldMergeBarcodeImplementeert het MERGEBARCODE mail-merge barcode-veld
BarcodeParametersContainer voor barcode-instellingen die aan een generator worden doorgegeven
IBarcodeGeneratorInterface voor een aangepaste barcode-afbeeldingsrenderer
FieldBidiOutlineImplementeert het BIDIOUTLINE veld
FieldEQImplementeert het EQ vergelijkingveld; AsOfficeMath() converteert naar OfficeMath
FieldFootnoteRefImplementeert het FOOTNOTEREF veld
FieldInfoImplementeert het INFO documenteigenschapveld

Zie ook

 Nederlands