Campos de Automação de Documentos (IF, COMPARE, MACROBUTTON e Mais)
Campos de Automação de Documentos (IF, COMPARE e Mais)
Este guia mostra como trabalhar com a família de campos de automação de documentos do Word em Aspose.Words FOSS para .NET – campos que controlam texto condicional, armazenam variáveis de escopo de documento e conectam macros, navegação e comportamento de impressão, em vez de simplesmente exibir um valor calculado. Cada um é um Field subclasse no Aspose.Words.Fields espaço de nomes: FieldIf, FieldCompare, FieldDocVariable, FieldGoToButton, FieldMacroButton, e FieldPrint. Todos eles herdam o núcleo Field membros descritos em Trabalhando com Campos – GetFieldCode(), Update(), Remove(), Unlink(), Start/Separator/End, Result, e Format – esta página cobre o que é específico a cada um.
Texto Condicional com FieldIf
FieldIf implementa o IF campo. LeftExpression, ComparisonOperator, e RightExpression descreve a condição – a mesma forma de três partes usada por IComparisonExpressionEvaluator (veja Trabalhando com Campos) – e TrueText / FalseText mantenha os dois resultados possíveis. Chame EvaluateCondition() para avaliar a condição diretamente; retorna um FieldIfComparisonResult valor: True, False, ou Error.
Comparando Valores com FieldCompare
FieldCompare implementa o campo COMPARE. Como FieldIf, ele expõe LeftExpression, ComparisonOperator e RightExpression para descrever a comparação, mas produz um resultado no estilo booleano ao invés de alternar entre duas alternativas de texto.
Variáveis de Documento com FieldDocVariable
FieldDocVariable implementa o campo DOCVARIABLE, lendo uma variável nomeada de escopo de documento através de sua propriedade VariableName.
Botões: FieldGoToButton e FieldMacroButton
FieldGoToButton implementa o campo GOTOBUTTON: Location nomeia o marcador, página ou outro destino para o qual saltar, e DisplayText é o rótulo exibido no documento. FieldMacroButton implementa o campo MACROBUTTON: MacroName nomeia a macro a ser executada e DisplayText é o rótulo. Tanto FieldIf quanto FieldMacroButton também implementam IMergeFieldSurrogate, a interface que os campos compatíveis com mala direta do Word usam para marcar-se como conteúdo substituível.
Instruções de impressão com FieldPrint
FieldPrint implementa o campo PRINT: PrinterInstructions e PostScriptGroup contêm instruções específicas da impressora incorporadas diretamente no documento.
Dicas e Melhores Práticas
- Use
FieldIf.EvaluateCondition()para ler o resultado de uma condição (FieldIfComparisonResult) sem precisar analisarTrueText/FalseTextvocê mesmo. FieldCompareeFieldIfcompartilham a mesma formaLeftExpression/ComparisonOperator/RightExpression– código que constrói ou inspeciona uma expressão de comparação pode ser reutilizado em ambos os tipos de campo.- Lembre-se de que todos estes são
Fieldsubclasses:GetFieldCode(),Update(),Remove(), eUnlink()from Trabalhando com Campos aplique exatamente da mesma forma aqui.
Problemas Comuns
| Problema | Causa | Correção |
|---|---|---|
FieldIf.EvaluateCondition() retorna Error | Os operandos ou o operador da condição não puderam ser avaliados como escritos | Verifique LeftExpression, ComparisonOperator e RightExpression quanto a valores válidos |
O resultado de FieldDocVariable não reflete o valor esperado da variável | VariableName não corresponde a um nome de variável realmente presente no documento | Confirme o nome exato da variável e que ela existe antes de ler Result |
O texto exibido de FieldGoToButton/FieldMacroButton não corresponde ao que o Word mostra | DisplayText foi lido antes do campo ser atualizado, ou foi definido sem uma chamada correspondente de Update() | Chame Update() no campo, ou releia DisplayText após qualquer alteração nele |
FAQ
Como leio o resultado de um campo condicional IF?
Chame FieldIf.EvaluateCondition() para obter o FieldIfComparisonResult bruto, ou leia TrueText / FalseText para as duas alternativas de texto literal entre as quais o campo alterna.
Qual é a diferença entre FieldIf e FieldCompare?
FieldIf (o campo IF) alterna entre TrueText e FalseText com base em sua condição. FieldCompare (o campo COMPARE) compartilha a mesma forma de comparação, mas produz um resultado no estilo booleano em vez de texto alternativo.
Como leio o nome de uma variável de documento a partir de um campo DOCVARIABLE?
Leia FieldDocVariable.VariableName.
Como encontro o destino de um campo GOTOBUTTON?
Leia FieldGoToButton.Location; DisplayText fornece o rótulo exibido para o botão no documento.
API Reference Resumo
| Classe / Enum | Descrição |
|---|---|
FieldIf | IF campo; LeftExpression, ComparisonOperator, RightExpression, TrueText, FalseText, EvaluateCondition() |
FieldIfComparisonResult | Enum resultado de FieldIf.EvaluateCondition(): True, False, Error |
FieldCompare | COMPARE campo; LeftExpression, ComparisonOperator, RightExpression |
FieldDocVariable | DOCVARIABLE campo; VariableName |
FieldGoToButton | GOTOBUTTON campo; Location, DisplayText |
FieldMacroButton | MACROBUTTON campo; MacroName, DisplayText |
FieldPrint | PRINT campo; PrinterInstructions, PostScriptGroup |