Übergangsfelder

Übergangsfelder

Dieser Leitfaden zeigt, wie man mit Übergangsfeldtypen — Legacy-Barcode- und Kompatibilitätsfeldern — in Aspose.Words FOSS für .NET arbeitet.

Aspose.Words FOSS für .NET repräsentiert bestimmte ältere Word-Feldtypen durch einen dedizierten Satz von Klassen im Aspose.Words.Fields Namensraum, informell genannt transitional Felder. Dies sind Felder, die den späteren Open XML-Feldäquivalenten vorausgehen, aber innerhalb von .docx Dokumenten, die aus Legacy-Quellen geöffnet wurden. Jeder Übergangs-Feldtyp hat seine eigene stark typisierte Klasse, die abgeleitet ist von Field, neben dem generischen Field Objekt, das bereitgestellt wird von Document.Range.Fields.


Barcode-Felder

Drei Feldklassen erzeugen oder zeigen Barcode-Daten innerhalb eines Dokuments an: FieldBarcode (das BARCODE-Feld — ein Legacy-Post-Barcode mit eigenen PostalAddress, IsBookmark, FacingIdentificationMark und IsUSPostalAddress Eigenschaften), FieldDisplayBarcode (das DISPLAYBARCODE-Feld) und FieldMergeBarcode (das MERGEBARCODE-Feld, das außerdem IMergeFieldSurrogate für die Verwendung beim Seriendruck implementiert). FieldDisplayBarcode und FieldMergeBarcode teilen dieselben universellen Barcode-Konfigurationseigenschaften — BarcodeType, BarcodeValue, SymbolHeight, SymbolRotation, ScalingFactor, ForegroundColor, BackgroundColor, PosCodeStyle, CaseCodeStyle, ErrorCorrectionLevel, DisplayText, AddStartStopChar und FixCheckDigit — Eigenschaften, die FieldBarcode nicht hat.

Die BarcodeParameters-Klasse ist ein Durchlauf-Container, der die Vereinigung beider Eigenschaftensätze (die Postadress-Eigenschaften und die allgemeinen Barcode-Konfigurationseigenschaften) offenlegt, um Einstellungen an einen Barcode-Renderer zu übergeben, und IBarcodeGenerator ist die Schnittstelle, die ein benutzerdefinierter Renderer implementiert und GetBarcodeImage(parameters) sowie das Legacy-GetOldBarcodeImage(parameters) bereitstellt. Durchlaufen Sie Document.Range.Fields und prüfen Sie Field.Type gegenüber FieldType.FieldBarcode, FieldType.FieldDisplayBarcode oder FieldType.FieldMergeBarcode, um diese Felder zu finden, dann casten Sie zur spezifischen Feldklasse — BarcodeValue und BarcodeType sind nur nach dem Casten zu FieldDisplayBarcode bzw. FieldMergeBarcode verfügbar, nicht zu FieldBarcode.


Legacy-Kompatibilitätsfelder

Vier zusätzliche Feldklassen decken ältere Word-Feldcodes ab, die in neu erstellten Dokumenten weniger verbreitet sind, aber dennoch in Legacy-.docx-Dateien vorkommen: FieldBidiOutline (das BIDIOUTLINE-Feld für rechts-nach-links-Gliederungsnummerierung), FieldEQ (das EQ-Gleichungsfeld, das außerdem AsOfficeMath() bereitstellt, um dessen Inhalt in ein OfficeMath-Objekt zu konvertieren), FieldFootnoteRef (das FOOTNOTEREF-Feld, das eine Fuß- oder Endnotenmarkierung referenziert), und FieldInfo (das INFO-Feld, das eine Dokumenten-Zusammenfassungs-Informations-Eigenschaft über seine InfoType- und NewValue-Eigenschaften liest oder schreibt).

Jede dieser Feldklassen erbt dieselbe Field-Oberfläche: GetFieldCode() gibt den zugrunde liegenden Code-Text des Feldes zurück, Update() wertet das Ergebnis des Feldes neu aus, Unlink() ersetzt das Feld durch sein zuletzt berechnetes Ergebnis, und Remove() löscht das Feld aus dem Dokument. IFieldCodeTokenInfoProvider wird von FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode und FieldInfo implementiert, da deren Feldcodes strukturierte Schalter über einen einfachen Anweisungsstring hinaus enthalten.


Tipps und bewährte Vorgehensweisen

  • Überprüfen Sie stets Field.Type, bevor Sie ein generisches Field zu einer der Übergangs-Feldklassen casten — ein falscher Cast wirft ein InvalidCastException.
  • Rufen Sie Update() auf, nachdem Sie die Eigenschaften eines Barcode-Feldes geändert haben, damit Result die neue Konfiguration widerspiegelt, bevor das Dokument gespeichert wird.
  • FieldEQ.AsOfficeMath() gelingt nur, wenn das EQ-Feld tatsächlich eine Gleichung codiert; überprüfen Sie, ob das Result des Feldes wie eine Formel aussieht, bevor Sie es aufrufen.
  • Verwenden Sie Unlink(), wenn Sie den aktuellen Wert eines Feldes als statischen Text festschreiben möchten, wobei die Möglichkeit, es später neu zu berechnen, verworfen wird.
  • Barcode-Feldklassen enthalten nur Daten — diese FOSS-Edition beinhaltet nicht die Barcode-Rendering-Engine, sodass die GetBarcodeImage()-Ausgabe von der von Ihnen bereitgestellten IBarcodeGenerator-Implementierung abhängt.

Häufige Probleme

ProblemUrsacheBeheben
InvalidCastException beim Casting eines FieldFalsches FieldType angenommenÜberprüfen Sie Field.Type zuerst gegen die passende FieldType-Konstante
FieldEQ.AsOfficeMath() liefert unerwartete ErgebnisseFeld enthält keine gültige GleichungsanweisungUntersuchen Sie die Ausgabe von GetFieldCode() vor der Konvertierung
Barcode-Feld hat kein gerendertes BildKeine IBarcodeGenerator-Implementierung angegebenStellen Sie einen benutzerdefinierten Generator bereit, der GetBarcodeImage() implementiert
FieldInfo-Wert nach Änderung von NewValue nicht aktualisiertFeld nicht aktualisiertRufen Sie Update() für das Feld auf, nachdem Sie NewValue geändert haben

FAQ

Was bedeutet „transitional“ für diese Feldtypen?

Es ist keine offizielle Word-Terminologie — sie gruppiert Feldklassen im Aspose.Words.Fields-Namespace dieser Ausgabe, die ältere Feldcodes (Barcode- und vor-Open-XML-Kompatibilitätsfelder) über ihre eigenen stark typisierten Klassen implementieren, anstatt nur über das generische Field-Objekt verarbeitet zu werden.

Rendert diese Ausgabe Barcode-Bilder?

Nein. FieldBarcode, FieldDisplayBarcode und FieldMergeBarcode enthalten Barcode-Daten und stellen die IBarcodeGenerator-Schnittstelle bereit, aber es wird keine integrierte Barcode-Rendering-Engine in dieser Ausgabe mitgeliefert – Sie stellen Ihre eigene IBarcodeGenerator-Implementierung bereit.

Kann ich ein EQ-Feld in eine OfficeMath-Gleichung umwandeln?

Ja, über FieldEQ.AsOfficeMath(), vorausgesetzt, der Feldcode codiert tatsächlich eine Gleichung.

Wie finde ich alle Übergangsfelder in einem Dokument?

Zähle Document.Range.Fields auf und vergleiche jedes Field.Type mit den entsprechenden FieldType-Konstanten (FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef, FieldInfo).


API Reference Zusammenfassung

Klasse / MethodeBeschreibung
FieldBarcodeImplementiert das BARCODE-Feld
FieldDisplayBarcodeImplementiert das DISPLAYBARCODE-Feld
FieldMergeBarcodeImplementiert das MERGEBARCODE-Mail-Merge-Barcode-Feld
BarcodeParametersContainer für Barcode-Einstellungen, die an einen Generator übergeben werden
IBarcodeGeneratorSchnittstelle für einen benutzerdefinierten Barcode-Bildrenderer
FieldBidiOutlineImplementiert das BIDIOUTLINE-Feld
FieldEQImplementiert das EQ-Gleichungsfeld; AsOfficeMath() konvertiert zu OfficeMath
FieldFootnoteRefImplementiert das FOOTNOTEREF-Feld
FieldInfoImplementiert das INFO-Dokument-Eigenschaftsfeld

Siehe auch

 Deutsch