Přechodná pole

Přechodová pole

Tento průvodce ukazuje, jak pracovat s typy přechodových polí—staré čárové kódy a kompatibilní pole—v Aspose.Words FOSS pro .NET.

Aspose.Words FOSS pro .NET představuje určité starší typy polí Wordu prostřednictvím vyhrazené sady tříd v Aspose.Words.Fields jmenném prostoru, neformálně nazývaném transitional fields. Jedná se o pole, která předcházejí pozdějším ekvivalentům Open XML pole, ale zůstávají platná uvnitř .docx dokumentů otevřených ze starších zdrojů. Každý přechodový typ pole má vlastní silně typovanou třídu odvozenou od Field, spolu s obecným Field objektem vystaveným v Document.Range.Fields.


Pole čárových kódů

Tři třídy polí generují nebo zobrazují data čárového kódu uvnitř dokumentu: FieldBarcode (pole BARCODE—legacy poštovní čárový kód se svými vlastnostmi PostalAddress, IsBookmark, FacingIdentificationMark a IsUSPostalAddress), FieldDisplayBarcode (pole DISPLAYBARCODE) a FieldMergeBarcode (pole MERGEBARCODE, které také implementuje IMergeFieldSurrogate pro použití během hromadné korespondence). FieldDisplayBarcode a FieldMergeBarcode sdílejí stejné obecné konfigurační vlastnosti čárových kódů—BarcodeType, BarcodeValue, SymbolHeight, SymbolRotation, ScalingFactor, ForegroundColor, BackgroundColor, PosCodeStyle, CaseCodeStyle, ErrorCorrectionLevel, DisplayText, AddStartStopChar a FixCheckDigit—vlastnosti, které FieldBarcode nemá.

Třída BarcodeParameters je průchozí kontejner, který vystavuje sjednocení obou sad vlastností (vlastnosti poštovní adresy a obecné konfigurační vlastnosti čárových kódů), slouží k předání nastavení rendereru čárových kódů, a IBarcodeGenerator je rozhraní, které implementuje vlastní renderer, vystavující GetBarcodeImage(parameters) a legacy GetOldBarcodeImage(parameters). Procházejte Document.Range.Fields a kontrolujte Field.Type vůči FieldType.FieldBarcode, FieldType.FieldDisplayBarcode nebo FieldType.FieldMergeBarcode pro nalezení těchto polí, poté přetypujte na konkrétní třídu pole—BarcodeValue a BarcodeType jsou dostupné pouze po přetypování na FieldDisplayBarcode nebo FieldMergeBarcode, ne na FieldBarcode.


Legacy pole kompatibility

Čtyři další třídy polí pokrývají starší kódy polí Wordu, které jsou méně běžné v nově vytvářených dokumentech, ale stále se objevují v legacy .docx souborech: FieldBidiOutline (pole BIDIOUTLINE, pro číslování osnov zprava doleva), FieldEQ (pole rovnice EQ, které také poskytuje AsOfficeMath() k převodu jeho obsahu na objekt OfficeMath), FieldFootnoteRef (pole FOOTNOTEREF, které odkazuje na značku poznámky pod čarou nebo koncové poznámky), a FieldInfo (pole INFO, které čte nebo zapisuje vlastnost souhrnných informací dokumentu prostřednictvím jeho vlastností InfoType a NewValue).

Každá z těchto tříd polí dědí stejné rozhraní Field: GetFieldCode() vrací podkladový text kódu pole, Update() znovu vyhodnocuje výsledek pole, Unlink() nahradí pole jeho posledním vypočteným výsledkem a Remove() odstraní pole z dokumentu. IFieldCodeTokenInfoProvider je implementováno v FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode a FieldInfo, protože jejich kódy polí obsahují strukturované přepínače nad rámec jednoduchého řetězce instrukcí.


Tipy a osvědčené postupy

  • Vždy zkontrolujte Field.Type před přetypováním obecného Field na jednu z přechodových tříd polí — nesprávné přetypování vyvolá InvalidCastException.
  • Zavolejte Update() po změně vlastností pole čárového kódu, aby Result odráželo novou konfiguraci před uložením dokumentu.
  • FieldEQ.AsOfficeMath() uspěje pouze tehdy, když pole EQ skutečně kóduje rovnici; před jeho voláním ověřte, že Result pole vypadá jako vzorec.
  • Použijte Unlink(), když chcete zmrazit aktuální hodnotu pole jako statický text a zrušit možnost jejího pozdějšího přepočtu.
  • Třídy polí čárových kódů nesou jen data — tato FOSS edice neobsahuje renderovací engine pro čárové kódy, takže výstup GetBarcodeImage() závisí na implementaci IBarcodeGenerator, kterou poskytnete.

Běžné problémy

IssueCauseOpravit
InvalidCastException při přetypování FieldPředpokládán nesprávný FieldTypeNejprve zkontrolujte Field.Type vůči odpovídající konstantě FieldType
FieldEQ.AsOfficeMath() vrací neočekávané výsledkyPole neobsahuje platnou instrukci rovniceZkontrolujte výstup GetFieldCode() před konverzí
Pole čárového kódu neobsahuje vykreslený obrázekNebyla poskytnuta implementace IBarcodeGeneratorPoskytněte vlastní generátor, který implementuje GetBarcodeImage()
Hodnota FieldInfo nebyla aktualizována po změně NewValuePole nebylo obnovenoZavolejte Update() na pole po úpravě NewValue

FAQ

Co znamená „transitional“ pro tyto typy polí?

Nejedná se o oficiální terminologii Wordu — seskupuje třídy polí v tomto vydání v prostoru názvů Aspose.Words.Fields, které implementují starší kódy polí (čárový kód a pole kompatibility před Open-XML) pomocí vlastních silně typovaných tříd místo toho, aby byly zpracovány pouze prostřednictvím obecného objektu Field.

Zobrazuje toto vydání obrázky čárových kódů?

Ne. FieldBarcode, FieldDisplayBarcode a FieldMergeBarcode obsahují data čárových kódů a vystavují rozhraní IBarcodeGenerator, ale v tomto vydání není součástí žádný vestavěný engine pro vykreslování čárových kódů – musíte dodat vlastní implementaci IBarcodeGenerator.

Mohu převést pole EQ na rovnici OfficeMath?

Ano, přes FieldEQ.AsOfficeMath(), pokud kód pole skutečně kóduje rovnici.

Jak najdu všechna přechodová pole v dokumentu?

Vyjmenujte Document.Range.Fields a porovnejte každý Field.Type s příslušnými konstantami FieldType (FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef, FieldInfo).


API Reference Shrnutí

Třída / MetodaPopis:
FieldBarcodeImplementuje pole BARCODE
FieldDisplayBarcodeImplementuje pole DISPLAYBARCODE
FieldMergeBarcodeImplementuje MERGEBARCODE mail-merge barcode field
BarcodeParametersKontejner pro nastavení čárových kódů předávaných generátoru
IBarcodeGeneratorRozhraní pro vlastní vykreslovač obrázku čárového kódu
FieldBidiOutlineImplementuje pole BIDIOUTLINE
FieldEQImplementuje pole rovnice EQ; AsOfficeMath() převádí na OfficeMath
FieldFootnoteRefImplementuje pole FOOTNOTEREF
FieldInfoImplementuje pole INFO vlastnosti dokumentu

Viz také:

 Čeština