Á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ános Field objektumot egy átmeneti mezőosztályra konvertálna — egy helytelen konverzió InvalidCastException kivételt dob.
  • Hívja meg a Update() metódust a vonalkód mező tulajdonságainak módosítása után, hogy a Result tü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ő Result ké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 megadott IBarcodeGenerator megvalósítástól függ.

Általános problémák

IssueCauseJavítás
InvalidCastException egy Field átkonvertálásakorHibás FieldType feltételezveElőször ellenőrizze a Field.Type-t a megfelelő FieldType konstans ellen
FieldEQ.AsOfficeMath() váratlan eredményeket ad visszaA mező nem tartalmaz érvényes egyenletutasítástVizsgálja meg a GetFieldCode() kimenetét a konvertálás előtt
A vonalkód mezőben nincs megjelenített képNincs IBarcodeGenerator implementáció megadvaBiztosítson egy egyedi generátort, amely implementálja a GetBarcodeImage()-t
FieldInfo érték nem frissült a NewValue módosítása utánA mező nem frissültHí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ódusLeírás
FieldBarcodeImplementálja a BARCODE mezőt
FieldDisplayBarcodeImplementálja a(z) DISPLAYBARCODE mezőt
FieldMergeBarcodeImplementálja a(z) MERGEBARCODE mail-merge vonalkód mezőt
BarcodeParametersKonténer a generátornak átadott vonalkód beállításokhoz
IBarcodeGeneratorInterfész egy egyedi vonalkód képmegjelenítőhöz
FieldBidiOutlineMegvalósítja a BIDIOUTLINE mezőt
FieldEQMegvalósítja a EQ egyenlet mezőt; a AsOfficeMath() átalakul OfficeMath értékre
FieldFootnoteRefMegvalósítja a FOOTNOTEREF mezőt
FieldInfoMegvalósítja a INFO dokumentum-tulajdonság mezőt

Lásd még:

 Magyar