Поля автоматизации документов (IF, COMPARE, MACROBUTTON и другие)
Появления автоматизации документов (IF, COMPARE и другие)
Это руководство показывает, как работать с семейством полей автоматизации документов Word в Aspose.Words FOSS для .NET – поля, которые управляют условным текстом, хранят переменные в пределах документа и связывают макросы, навигацию и поведение печати, а не просто отображают вычисленное значение. Каждый является Field подклассом в Aspose.Words.Fields пространстве имён: FieldIf, FieldCompare, FieldDocVariable, FieldGoToButton, FieldMacroButton, и FieldPrint. Все они наследуют основной Field члены, описанные в Работа с полями – GetFieldCode(), Update(), Remove(), Unlink(), Start/Separator/End, Result, и Format – эта страница охватывает то, что специфично для каждого.
Условный текст с FieldIf
FieldIf реализует IF поле. LeftExpression, ComparisonOperator, и RightExpression описывают условие – та же трехчастная форма, используемая IComparisonExpressionEvaluator (см Работа с полями) – и TrueText / FalseText содержат два возможных результата. Вызовите EvaluateCondition() для непосредственной оценки условия; возвращает FieldIfComparisonResult значение: True, False, или Error.
Сравнение значений с FieldCompare
FieldCompare реализует поле COMPARE. Как и FieldIf, он раскрывает LeftExpression, ComparisonOperator и RightExpression для описания сравнения, но выдаёт результат в виде булевого значения, а не переключает между двумя текстовыми альтернативами.
Переменные документа с FieldDocVariable
FieldDocVariable реализует поле DOCVARIABLE, читая именованную переменную уровня документа через её свойство VariableName.
Кнопки: FieldGoToButton и FieldMacroButton
FieldGoToButton реализует поле GOTOBUTTON: Location задаёт имя закладки, страницы или другой цели перехода, а DisplayText — это метка, отображаемая в документе. FieldMacroButton реализует поле MACROBUTTON: MacroName задаёт имя макроса для выполнения, а DisplayText — это метка. Оба FieldIf и FieldMacroButton дополнительно реализуют IMergeFieldSurrogate, интерфейс, который поля Word, поддерживающие слияние писем, используют для пометки себя как заменяемого содержимого.
Печатные инструкции с FieldPrint
FieldPrint реализует поле PRINT: PrinterInstructions и PostScriptGroup содержат специфические для принтера инструкции, встроенные непосредственно в документ.
Советы и рекомендации
- Используйте
FieldIf.EvaluateCondition()для чтения результата условия (FieldIfComparisonResult), не требуя самостоятельно разбиратьTrueText/FalseText. FieldCompareиFieldIfимеют одинаковую формуLeftExpression/ComparisonOperator/RightExpression— код, который создает или проверяет одно сравнение, может быть переиспользован для обоих типов полей.- Помните, что это все
Fieldподклассы:GetFieldCode(),Update(),Remove(), иUnlink()from Работа с полями применяется точно так же здесь.
Распространённые проблемы
| Проблема | Причина | Исправление |
|---|---|---|
FieldIf.EvaluateCondition() возвращает Error | Операнды или оператор условия не могут быть вычислены в написанном виде | Проверьте LeftExpression, ComparisonOperator и RightExpression на корректные значения |
FieldDocVariable результат не отражает ожидаемое значение переменной | VariableName не соответствует имени переменной, фактически присутствующей в документе | Подтвердите точное имя переменной и её наличие перед чтением Result |
Отображаемый текст FieldGoToButton/FieldMacroButton не совпадает с тем, что показывает Word | DisplayText был прочитан до обновления поля или был установлен без соответствующего вызова Update() | Вызовите Update() для поля или повторно прочитайте DisplayText после любого изменения |
FAQ
Как прочитать результат условного поля IF?
Вызовите FieldIf.EvaluateCondition() для получения необработанного FieldIfComparisonResult, или прочитайте TrueText / FalseText для двух буквальных текстовых альтернатив, между которыми переключается поле.
В чём разница между FieldIf и FieldCompare?
FieldIf (поле IF) переключается между TrueText и FalseText в зависимости от своего условия. FieldCompare (поле COMPARE) имеет ту же форму сравнения, но выдаёт результат в виде булевого значения, а не альтернативного текста.
Как прочитать имя переменной документа из поля DOCVARIABLE?
Прочитайте FieldDocVariable.VariableName.
Как найти назначение поля GOTOBUTTON?
Прочитайте FieldGoToButton.Location; DisplayText задаёт подпись, отображаемую на кнопке в документе.
API Reference Сводка
| Класс / Перечисление | Описание: |
|---|---|
FieldIf | IF поле; LeftExpression, ComparisonOperator, RightExpression, TrueText, FalseText, EvaluateCondition() |
FieldIfComparisonResult | Результат перечисления FieldIf.EvaluateCondition(): True, False, Error |
FieldCompare | COMPARE поле; LeftExpression, ComparisonOperator, RightExpression |
FieldDocVariable | DOCVARIABLE поле; VariableName |
FieldGoToButton | GOTOBUTTON поле; Location, DisplayText |
FieldMacroButton | MACROBUTTON поле; MacroName, DisplayText |
FieldPrint | PRINT поле; PrinterInstructions, PostScriptGroup |