Övergångsfält

Övergångsfält

Den här guiden visar hur man arbetar med övergångsfälttyper — äldre streckkod- och kompatibilitetsfält — i Aspose.Words FOSS för .NET.

Aspose.Words FOSS för .NET representerar vissa äldre Word-fälttyper genom en dedikerad uppsättning klasser i Aspose.Words.Fields namnutrymmet, informellt kallat transitional fält. Dessa är fält som föregick senare Open XML fält motsvarigheter men förblir giltiga inom .docx dokument som öppnas från äldre källor. Varje övergångsfälttyp har sin egen starkt typade klass som ärver från Field, tillsammans med den generiska Field objektet som exponeras av Document.Range.Fields.


Streckkodfält

Tre fältklasser genererar eller visar streckkodsdata i ett dokument: FieldBarcode (fältet BARCODE — en äldre poststreckkod med sina egna PostalAddress, IsBookmark, FacingIdentificationMark och IsUSPostalAddress egenskaper), FieldDisplayBarcode (fältet DISPLAYBARCODE), och FieldMergeBarcode (fältet MERGEBARCODE, som också implementerar IMergeFieldSurrogate för användning vid kopplad utskrift). FieldDisplayBarcode och FieldMergeBarcode delar samma allmänna streckkodskonfigurationsegenskaper — BarcodeType, BarcodeValue, SymbolHeight, SymbolRotation, ScalingFactor, ForegroundColor, BackgroundColor, PosCodeStyle, CaseCodeStyle, ErrorCorrectionLevel, DisplayText, AddStartStopChar och FixCheckDigit — egenskaper som FieldBarcode inte har.

Klassen BarcodeParameters är en genomströmmande behållare som exponerar föreningen av båda egenskapsuppsättningarna (postadress-egenskaperna och de allmänna streckkodskonfigurations-egenskaperna), används för att överföra inställningar till en streckkodsgenererare, och IBarcodeGenerator är det gränssnitt som en anpassad renderare implementerar, exponerar GetBarcodeImage(parameters) och den äldre GetOldBarcodeImage(parameters). Iterera Document.Range.Fields och kontrollera Field.Type mot FieldType.FieldBarcode, FieldType.FieldDisplayBarcode eller FieldType.FieldMergeBarcode för att hitta dessa fält, kasta sedan till den specifika fältklassen — BarcodeValue och BarcodeType är endast tillgängliga efter casting till FieldDisplayBarcode eller FieldMergeBarcode, inte FieldBarcode.


Äldre kompatibilitetsfält

Fyra ytterligare fältklasser täcker äldre Word-fältkoder som är mindre vanliga i nyproducerade dokument men som fortfarande förekommer i äldre .docx-filer: FieldBidiOutline (fältet BIDIOUTLINE, för höger-till-vänster dispositionsnumrering), FieldEQ (fältet EQ ekvation, som också exponerar AsOfficeMath() för att konvertera dess innehåll till ett OfficeMath-objekt), FieldFootnoteRef (fältet FOOTNOTEREF, som korsrefererar en fotnot- eller slutnot-markör), och FieldInfo (fältet INFO, som läser eller skriver en dokument-sammanfattnings-informations-egenskap via dess InfoType och NewValue egenskaper).

Var och en av dessa fältklasser ärver samma Field gränssnitt: GetFieldCode() returnerar fältets underliggande kodtext, Update() utvärderar fältets resultat på nytt, Unlink() ersätter fältet med dess senast beräknade resultat, och Remove() tar bort fältet från dokumentet. IFieldCodeTokenInfoProvider implementeras av FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode och FieldInfo, eftersom deras fältkoder innehåller strukturerade växlar utöver en enkel instruktionssträng.


Tips och bästa praxis

  • Kontrollera alltid Field.Type innan du kastar ett generiskt Field till någon av de övergångsfältklasserna — ett felaktigt kast kastar ett InvalidCastException.
  • Anropa Update() efter att ha ändrat ett streckkodsfälts egenskaper så att Result återspeglar den nya konfigurationen innan dokumentet sparas.
  • FieldEQ.AsOfficeMath() lyckas endast när EQ-fältet faktiskt kodar en ekvation; verifiera att fältets Result ser ut som en formel innan du anropar det.
  • Använd Unlink() när du vill frysa ett fälts aktuella värde som statisk text, och därmed förlora möjligheten att beräkna om det senare.
  • Streckkodsfältklasser bär endast data — den här FOSS-utgåvan inkluderar inte streckkodsrenderingsmotorn, så GetBarcodeImage()-utdata beror på den IBarcodeGenerator-implementation du tillhandahåller.

Vanliga problem

IssueCauseFixa
InvalidCastException vid kastning av en FieldFel FieldType antagenKontrollera Field.Type mot den matchande FieldType-konstanten först
FieldEQ.AsOfficeMath() ger oväntade resultatFältet innehåller inte en giltig ekvationsinstruktionInspektera GetFieldCode()-utdata innan konvertering
Streckkodsfältet har ingen renderad bildIngen IBarcodeGenerator-implementation tillhandahållenTillhandahåll en anpassad generator som implementerar GetBarcodeImage()
FieldInfo värde uppdateras inte efter NewValue-ändringFältet har inte uppdateratsAnropa Update() på fältet efter att ha ändrat NewValue

FAQ

Vad betyder “transitional” för dessa fälttyper?

Det är inte officiell Word-terminologi — den grupperar fältklasser i den här utgåvans Aspose.Words.Fields-namnrymd som implementerar äldre fältkoder (streckkod och kompatibilitetsfält före Open-XML) via sina egna starkt typade klasser snarare än att bara hanteras genom det generiska Field-objektet.

Renderar den här utgåvan streckkodsbilder?

Nej. FieldBarcode, FieldDisplayBarcode och FieldMergeBarcode lagrar streckkodsdata och exponerar IBarcodeGenerator-gränssnittet, men ingen inbyggd streckkodsrenderingsmotor levereras i den här utgåvan — du tillhandahåller din egen IBarcodeGenerator-implementation.

Kan jag konvertera ett EQ-fält till en OfficeMath-ekvation?

Ja, via FieldEQ.AsOfficeMath(), förutsatt att fältets kod faktiskt kodar en ekvation.

Hur hittar jag alla övergångsfält i ett dokument?

Enumerera Document.Range.Fields och jämför varje Field.Type med de relevanta FieldType-konstanterna (FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef, FieldInfo).


API Reference Sammanfattning

Klass / MetodBeskrivning
FieldBarcodeImplementerar BARCODE-fältet
FieldDisplayBarcodeImplementerar DISPLAYBARCODE-fältet
FieldMergeBarcodeImplementerar MERGEBARCODE mail-merge streckkodsfältet
BarcodeParametersBehållare för streckkodinställningar som skickas till en generator
IBarcodeGeneratorGränssnitt för en anpassad streckkodsbilderenderare
FieldBidiOutlineImplementerar fältet BIDIOUTLINE
FieldEQImplementerar EQ ekvationsfältet; AsOfficeMath() konverterar till OfficeMath
FieldFootnoteRefImplementerar fältet FOOTNOTEREF
FieldInfoImplementerar INFO dokumentegenskapsfält

Se även

 Svenska