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.Typevoordat je een generiekeFieldnaar een van de overgangsveldklassen cast — een onjuiste cast veroorzaakt eenInvalidCastException. - Roep
Update()aan na het wijzigen van de eigenschappen van een barcodeveld zodatResultde nieuwe configuratie weerspiegelt voordat het document wordt opgeslagen. FieldEQ.AsOfficeMath()slaagt alleen wanneer het EQ-veld daadwerkelijk een vergelijking codeert; controleer of deResultvan 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 deIBarcodeGeneratorimplementatie die je levert.
Veelvoorkomende problemen
| Issue | Cause | Oplossen |
|---|---|---|
InvalidCastException bij het casten van een Field | Verkeerde FieldType aangenomen | Controleer Field.Type eerst tegen de bijbehorende FieldType constante |
FieldEQ.AsOfficeMath() geeft onverwachte resultaten | Veld bevat geen geldige vergelijking-instructie | Inspecteer GetFieldCode() output vóór conversie |
| Barcode-veld heeft geen gerenderde afbeelding | Geen IBarcodeGenerator implementatie opgegeven | Voorzie een aangepaste generator die GetBarcodeImage() implementeert |
Waarde van FieldInfo niet bijgewerkt na wijziging van NewValue | Veld niet vernieuwd | Roep 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 / Methode | Beschrijving |
|---|---|
FieldBarcode | Implementeert het BARCODE veld |
FieldDisplayBarcode | Implementeert het DISPLAYBARCODE veld |
FieldMergeBarcode | Implementeert het MERGEBARCODE mail-merge barcode-veld |
BarcodeParameters | Container voor barcode-instellingen die aan een generator worden doorgegeven |
IBarcodeGenerator | Interface voor een aangepaste barcode-afbeeldingsrenderer |
FieldBidiOutline | Implementeert het BIDIOUTLINE veld |
FieldEQ | Implementeert het EQ vergelijkingveld; AsOfficeMath() converteert naar OfficeMath |
FieldFootnoteRef | Implementeert het FOOTNOTEREF veld |
FieldInfo | Implementeert het INFO documenteigenschapveld |