Campos de transição

Campos de Transição

Este guia mostra como trabalhar com tipos de campos de transição — campos de código de barras legados e de compatibilidade — no Aspose.Words FOSS para .NET.

Aspose.Words FOSS for .NET representa certos tipos de campo Word mais antigos por meio de um conjunto dedicado de classes no Aspose.Words.Fields namespace, informalmente chamado transitional campos. Estes são campos que antecedem equivalentes posteriores de campo Open XML, mas permanecem válidos dentro .docx documentos abertos a partir de fontes legadas. Cada tipo de campo de transição tem sua própria classe fortemente tipada derivada de Field, juntamente com o genérico Field objeto exposto por Document.Range.Fields.


Campos de Código de Barras

Três classes de campo geram ou exibem dados de código de barras dentro de um documento: FieldBarcode (o campo BARCODE — um código de barras postal legado com suas próprias propriedades PostalAddress, IsBookmark, FacingIdentificationMark e IsUSPostalAddress), FieldDisplayBarcode (o campo DISPLAYBARCODE), e FieldMergeBarcode (o campo MERGEBARCODE, que também implementa IMergeFieldSurrogate para uso durante mesclagem de correspondência). FieldDisplayBarcode e FieldMergeBarcode compartilham as mesmas propriedades de configuração de código de barras de uso geral — BarcodeType, BarcodeValue, SymbolHeight, SymbolRotation, ScalingFactor, ForegroundColor, BackgroundColor, PosCodeStyle, CaseCodeStyle, ErrorCorrectionLevel, DisplayText, AddStartStopChar e FixCheckDigit — propriedades que FieldBarcode não possui.

A classe BarcodeParameters é um contêiner de passagem que expõe a união de ambos os conjuntos de propriedades (as propriedades de endereço postal e as propriedades gerais de configuração de código de barras), usado para repassar configurações a um renderizador de código de barras, e IBarcodeGenerator é a interface que um renderizador personalizado implementa, expondo GetBarcodeImage(parameters) e o legado GetOldBarcodeImage(parameters). Itere Document.Range.Fields e verifique Field.Type em relação a FieldType.FieldBarcode, FieldType.FieldDisplayBarcode ou FieldType.FieldMergeBarcode para localizar esses campos, então faça o cast para a classe de campo específica — BarcodeValue e BarcodeType estão disponíveis somente após o cast para FieldDisplayBarcode ou FieldMergeBarcode, não FieldBarcode.


Campos de Compatibilidade Legada

Quatro classes de campo adicionais cobrem códigos de campo Word mais antigos que são menos comuns em documentos recém criados, mas ainda aparecem em arquivos legados .docx: FieldBidiOutline (o campo BIDIOUTLINE, para numeração de contorno da direita para a esquerda), FieldEQ (o campo de equação EQ, que também expõe AsOfficeMath() para converter seu conteúdo em um objeto OfficeMath), FieldFootnoteRef (o campo FOOTNOTEREF, que faz referência cruzada a uma marca de nota de rodapé ou nota de fim), e FieldInfo (o campo INFO, que lê ou grava uma propriedade de resumo de informações do documento através de suas propriedades InfoType e NewValue).

Cada uma dessas classes de campo herda a mesma interface Field: GetFieldCode() devolve o texto do código subjacente do campo, Update() reavalia o resultado do campo, Unlink() substitui o campo pelo seu último resultado calculado, e Remove() exclui o campo do documento. IFieldCodeTokenInfoProvider é implementado por FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode e FieldInfo, já que seus códigos de campo contêm switches estruturados além de uma simples string de instrução.


Dicas e Melhores Práticas

  • Sempre verifique Field.Type antes de converter um Field genérico para uma das classes de campo de transição — uma conversão incorreta lança um InvalidCastException.
  • Chame Update() após alterar as propriedades de um campo de código de barras para que Result reflita a nova configuração antes de o documento ser salvo.
  • FieldEQ.AsOfficeMath() só tem sucesso quando o campo EQ realmente codifica uma equação; verifique se o Result do campo parece uma fórmula antes de chamá-lo.
  • Use Unlink() quando quiser congelar o valor atual de um campo como texto estático, descartando a capacidade de recalculá-lo mais tarde.
  • As classes de campo de código de barras apenas carregam dados — esta edição FOSS não inclui o motor de renderização de códigos de barras, portanto a saída de GetBarcodeImage() depende da implementação de IBarcodeGenerator que você fornece.

Problemas Comuns

IssueCauseCorrigir
InvalidCastException ao converter um FieldSuposição incorreta de FieldTypeVerifique Field.Type contra a constante correspondente FieldType primeiro
FieldEQ.AsOfficeMath() retorna resultados inesperadosO campo não contém uma instrução de equação válidaInspecione a saída de GetFieldCode() antes da conversão
O campo de código de barras não tem imagem renderizadaNenhuma implementação de IBarcodeGenerator fornecidaForneça um gerador personalizado que implemente GetBarcodeImage()
Valor de FieldInfo não atualizado após alteração de NewValueCampo não atualizadoChame Update() no campo após modificar NewValue

FAQ

O que significa “transitional” para esses tipos de campo?

Não é terminologia oficial do Word — agrupa classes de campo no namespace Aspose.Words.Fields desta edição que implementam códigos de campo mais antigos (barcode e campos de compatibilidade pré-Open-XML) por meio de suas próprias classes fortemente tipadas, em vez de serem manipulados apenas pelo objeto genérico Field.

Esta edição renderiza imagens de barcode?

Não. FieldBarcode, FieldDisplayBarcode e FieldMergeBarcode armazenam dados de barcode e expõem a interface IBarcodeGenerator, mas nenhum mecanismo de renderização de barcode embutido é fornecido nesta edição — você fornece sua própria implementação IBarcodeGenerator.

Posso converter um campo EQ em uma equação OfficeMath?

Sim, via FieldEQ.AsOfficeMath(), desde que o código do campo realmente codifique uma equação.

Como encontro todos os campos de transição em um documento?

Enumere Document.Range.Fields e compare cada Field.Type com as constantes FieldType relevantes (FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef, FieldInfo).


API Reference Resumo

Classe / MétodoDescrição
FieldBarcodeImplementa o campo BARCODE
FieldDisplayBarcodeImplementa o campo DISPLAYBARCODE
FieldMergeBarcodeImplementa o campo de código de barras de mala direta MERGEBARCODE
BarcodeParametersContêiner para configurações de código de barras passadas a um gerador
IBarcodeGeneratorInterface para um renderizador de imagem de código de barras personalizado
FieldBidiOutlineImplementa o campo BIDIOUTLINE
FieldEQImplementa o campo de equação EQ; AsOfficeMath() converte para OfficeMath
FieldFootnoteRefImplementa o campo FOOTNOTEREF
FieldInfoImplementa o campo de propriedade de documento INFO

Ver também

 Português