Átmeneti mezők
Átmeneti mezők
Ez az útmutató bemutatja, hogyan kell dolgozni az átmeneti mezőtípusokkal – a régi vonalkód- és kompatibilitási mezőkkel – a Aspose.Words FOSS-ban a .NET számára.
Aspose.Words FOSS for .NET bizonyos régebbi Word mezőtípusokat képvisel egy dedikált osztálykészlettel a Aspose.Words.Fields névtérben, informálisan nevezve transitional mezők. Ezek olyan mezők, amelyek korábban léteztek, mint a későbbi Open XML mező megfelelői, de továbbra is érvényesek a belül .docx örökölt forrásokból megnyitott dokumentumokban. Minden átmeneti mezőtípus saját erősen tipizált osztállyal rendelkezik, amely származik a Field, együtt a generikus Field objektummal, amelyet a Document.Range.Fields.
Vonalkód mezők
Három mezőosztály generál vagy jelenít meg vonalkód adatokat egy dokumentumban: FieldBarcode (a BARCODE mező — egy régi postai vonalkód a saját PostalAddress, IsBookmark, FacingIdentificationMark és IsUSPostalAddress tulajdonságaival), FieldDisplayBarcode (a DISPLAYBARCODE mező), és FieldMergeBarcode (a MERGEBARCODE mező, amely emellett IMergeFieldSurrogate is megvalósít a levélösszefűzés során). A FieldDisplayBarcode és FieldMergeBarcode ugyanazokat az általános célú vonalkód-konfigurációs tulajdonságokat osztják meg — BarcodeType, BarcodeValue, SymbolHeight, SymbolRotation, ScalingFactor, ForegroundColor, BackgroundColor, PosCodeStyle, CaseCodeStyle, ErrorCorrectionLevel, DisplayText, AddStartStopChar és FixCheckDigit — olyan tulajdonságok, amelyeket a FieldBarcode nem tartalmaz.
A BarcodeParameters osztály egy átmeneti konténer, amely a két tulajdonságkészlet (a postacímmel kapcsolatos tulajdonságok és az általános vonalkód-konfigurációs tulajdonságok) unióját teszi láthatóvá, és a beállítások vonalkód-renderelőnek átadására szolgál, míg a IBarcodeGenerator egy interfész, amelyet egy egyéni renderelő valósít meg, és amely a GetBarcodeImage(parameters) valamint a régi GetOldBarcodeImage(parameters) elérését biztosítja. Iterálja a Document.Range.Fields elemet, és ellenőrizze a Field.Type értékét a FieldType.FieldBarcode, FieldType.FieldDisplayBarcode vagy FieldType.FieldMergeBarcode ellen, hogy megtalálja ezeket a mezőket, majd castolja a konkrét mezőosztályra – a BarcodeValue és a BarcodeType csak a FieldDisplayBarcode vagy a FieldMergeBarcode típusra történő castolás után érhetők el, nem a FieldBarcode esetén.
Régi kompatibilitási mezők
Négy további mezőosztály fedi le a régebbi Word mezőkódokat, amelyek kevésbé gyakoriak az újonnan szerkesztett dokumentumokban, de még mindig megjelennek a régi .docx fájlokban: FieldBidiOutline (a BIDIOUTLINE mező, jobbról balra történő vázszámozáshoz), FieldEQ (a EQ egyenletmező, amely továbbá AsOfficeMath() biztosít a tartalma OfficeMath objektummá alakításához), FieldFootnoteRef (a FOOTNOTEREF mező, amely keresztül hivatkozik egy lábjegyzet vagy végjegyzet jelölésre), és FieldInfo (a INFO mező, amely egy dokumentum összefoglaló-információs tulajdonságot olvas vagy ír a InfoType és NewValue tulajdonságain keresztül).
Ezek a mezőosztályok mindegyike örökli ugyanazt a Field felületet: GetFieldCode() visszaadja a mező alapvető kódszövegét, Update() újraértékeli a mező eredményét, Unlink() a mezőt az utolsó kiszámított eredménnyel helyettesíti, és Remove() törli a mezőt a dokumentumból. IFieldCodeTokenInfoProvider a FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode és FieldInfo által van megvalósítva, mivel mezőkódjaik struktúrált kapcsolókat tartalmaznak egy egyszerű utasítási karakterlánc helyett.
Tippek és bevált gyakorlatok
- Mindig ellenőrizze a
Field.Typeértékét, mielőtt egy általánosFieldobjektumot egy átmeneti mezőosztályra konvertálna — egy helytelen konverzióInvalidCastExceptionkivételt dob. - Hívja meg a
Update()metódust a vonalkód mező tulajdonságainak módosítása után, hogy aResulttükrözze az új beállítást, mielőtt a dokumentum mentésre kerül. - A
FieldEQ.AsOfficeMath()csak akkor sikerül, ha az EQ mező valóban egy egyenletet kódol; ellenőrizze, hogy a mezőResultképletként néz-e ki, mielőtt meghívná. - Használja a
Unlink()funkciót, ha egy mező jelenlegi értékét statikus szövegként szeretné rögzíteni, ezzel elvetve a későbbi újraszámítás lehetőségét. - A vonalkód mezőosztályok csak adatot hordoznak — ez a FOSS kiadás nem tartalmazza a vonalkód renderelő motorját, ezért a
GetBarcodeImage()kimenet a megadottIBarcodeGeneratormegvalósítástól függ.
Általános problémák
| Issue | Cause | Javítás |
|---|---|---|
InvalidCastException egy Field átkonvertálásakor | Hibás FieldType feltételezve | Először ellenőrizze a Field.Type-t a megfelelő FieldType konstans ellen |
FieldEQ.AsOfficeMath() váratlan eredményeket ad vissza | A mező nem tartalmaz érvényes egyenletutasítást | Vizsgálja meg a GetFieldCode() kimenetét a konvertálás előtt |
| A vonalkód mezőben nincs megjelenített kép | Nincs IBarcodeGenerator implementáció megadva | Biztosítson egy egyedi generátort, amely implementálja a GetBarcodeImage()-t |
FieldInfo érték nem frissült a NewValue módosítása után | A mező nem frissült | Hívja meg a Update() a mezőn a NewValue módosítása után |
FAQ
Mit jelent a „transitional” ezeknél a mezőtípusoknál?
Ez nem a hivatalos Word terminológia — a mezőosztályokat ebben a kiadásban a Aspose.Words.Fields névtérbe csoportosítja, amelyek a régebbi mezőkódokat (vonalkód és a pre-Open-XML kompatibilitási mezőket) saját erősen típusos osztályaikon keresztül valósítják meg, ahelyett, hogy csak az általános Field objektumon keresztül lennének kezelve.
Megjeleníti ez a kiadás a vonalkód képeket?
Nem. A FieldBarcode, FieldDisplayBarcode és FieldMergeBarcode vonalkód adatot tárolnak és a IBarcodeGenerator interfészt teszik elérhetővé, de ebben a kiadásban nincs beépített vonalkód renderelő motor — saját IBarcodeGenerator megvalósítást kell biztosítania.
Átalakíthatok egy EQ mezőt egy OfficeMath egyenletté?
Igen, a FieldEQ.AsOfficeMath() segítségével, feltéve hogy a mező kódja ténylegesen egy egyenletet kódol.
Hogyan találom meg a dokumentumban az összes átmeneti mezőt?
Sorolja fel a Document.Range.Fields elemeket, és hasonlítsa össze minden Field.Type értéket a megfelelő FieldType állandókkal (FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef, FieldInfo).
API Reference összefoglaló
| Osztály / Metódus | Leírás |
|---|---|
FieldBarcode | Implementálja a BARCODE mezőt |
FieldDisplayBarcode | Implementálja a(z) DISPLAYBARCODE mezőt |
FieldMergeBarcode | Implementálja a(z) MERGEBARCODE mail-merge vonalkód mezőt |
BarcodeParameters | Konténer a generátornak átadott vonalkód beállításokhoz |
IBarcodeGenerator | Interfész egy egyedi vonalkód képmegjelenítőhöz |
FieldBidiOutline | Megvalósítja a BIDIOUTLINE mezőt |
FieldEQ | Megvalósítja a EQ egyenlet mezőt; a AsOfficeMath() átalakul OfficeMath értékre |
FieldFootnoteRef | Megvalósítja a FOOTNOTEREF mezőt |
FieldInfo | Megvalósítja a INFO dokumentum-tulajdonság mezőt |