Pola automatyzacji dokumentu (IF, COMPARE, MACROBUTTON, i więcej)
Pola automatyzacji dokumentu (IF, COMPARE i więcej)
Ten przewodnik pokazuje, jak pracować z rodziną pól automatyzacji dokumentów w Aspose.Words FOSS dla .NET – pola, które sterują tekstem warunkowym, przechowują zmienne o zakresie dokumentu oraz łączą makra, nawigację i zachowanie drukowania, zamiast po prostu wyświetlać obliczoną wartość. Każde z nich jest Field podklasą w Aspose.Words.Fields przestrzeni nazw: FieldIf, FieldCompare, FieldDocVariable, FieldGoToButton, FieldMacroButton, oraz FieldPrint. Wszystkie z nich dziedziczą podstawowy Field członkowie opisani w Praca z polami – GetFieldCode(), Update(), Remove(), Unlink(), Start/Separator/End, Result, i Format – ta strona opisuje, co jest specyficzne dla każdego.
Tekst warunkowy z FieldIf
FieldIf implementuje IF pole. LeftExpression, ComparisonOperator, i RightExpression opisują warunek – ten sam trójczłonowy kształt używany przez IComparisonExpressionEvaluator (zobacz Praca z polami) – i TrueText / FalseText zawierają dwa możliwe wyniki. Wywołaj EvaluateCondition() aby ocenić warunek bezpośrednio; zwraca FieldIfComparisonResult wartość: True, False, lub Error.
Porównywanie wartości z FieldCompare
FieldCompare implementuje pole COMPARE. Podobnie jak FieldIf, udostępnia LeftExpression, ComparisonOperator i RightExpression do opisania porównania, ale zwraca wynik w stylu logicznym, a nie przełącza pomiędzy dwoma alternatywami tekstowymi.
Zmienne dokumentu z FieldDocVariable
FieldDocVariable implementuje pole DOCVARIABLE, odczytując nazwową zmienną o zakresie dokumentu poprzez jej właściwość VariableName.
Przyciski: FieldGoToButton i FieldMacroButton
FieldGoToButton implementuje pole GOTOBUTTON: Location określa nazwę zakładki, strony lub innego miejsca docelowego, do którego ma nastąpić skok, a DisplayText jest etykietą wyświetlaną w dokumencie. FieldMacroButton implementuje pole MACROBUTTON: MacroName określa nazwę makra do uruchomienia, a DisplayText jest etykietą. Zarówno FieldIf, jak i FieldMacroButton dodatkowo implementują IMergeFieldSurrogate, interfejs używany przez pola świadome scalania korespondencji w Wordzie do oznaczania siebie jako treść podlegającą podstawieniu.
Instrukcje drukowania za pomocą FieldPrint
FieldPrint implementuje pole PRINT: PrinterInstructions i PostScriptGroup zawierają instrukcje specyficzne dla drukarki, osadzone bezpośrednio w dokumencie.
Wskazówki i najlepsze praktyki
- Użyj
FieldIf.EvaluateCondition(), aby odczytać wynik warunku (FieldIfComparisonResult) bez konieczności samodzielnego parsowaniaTrueText/FalseText. FieldCompareiFieldIfmają tę samą strukturęLeftExpression/ComparisonOperator/RightExpression– kod budujący lub analizujący jedno wyrażenie porównania może być ponownie użyty w obu typach pól.- Pamiętaj, że wszystkie te są
Fieldpodklasami:GetFieldCode(),Update(),Remove(), iUnlink()from Praca z polami zastosuj dokładnie w ten sam sposób tutaj.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
FieldIf.EvaluateCondition() zwraca Error | Operandy lub operator warunku nie mogły zostać ocenione zgodnie z zapisem | Sprawdź LeftExpression, ComparisonOperator i RightExpression pod kątem prawidłowych wartości |
Wynik FieldDocVariable nie odzwierciedla oczekiwanej wartości zmiennej | VariableName nie pasuje do nazwy zmiennej faktycznie występującej w dokumencie | Potwierdź dokładną nazwę zmiennej oraz jej istnienie przed odczytaniem Result |
tekst wyświetlany FieldGoToButton/FieldMacroButton nie zgadza się z tym, co pokazuje Word | DisplayText został odczytany przed zaktualizowaniem pola lub został ustawiony bez odpowiadającego wywołania Update() | Wywołaj Update() na polu lub ponownie odczytaj DisplayText po każdej zmianie |
FAQ
Jak odczytać wynik warunkowego pola IF?
Wywołaj FieldIf.EvaluateCondition() po surowy FieldIfComparisonResult, lub odczytaj TrueText / FalseText dla dwóch dosłownych alternatyw tekstowych, między którymi pole się przełącza.
Jaka jest różnica między FieldIf a FieldCompare?
FieldIf (pole IF) przełącza się między TrueText a FalseText w zależności od warunku. FieldCompare (pole COMPARE) ma taką samą strukturę porównania, ale zwraca wynik w stylu boolowskim, a nie alternatywny tekst.
Jak odczytać nazwę zmiennej dokumentu z pola DOCVARIABLE?
Przeczytaj FieldDocVariable.VariableName.
Jak znaleźć miejsce docelowe pola GOTOBUTTON?
Przeczytaj FieldGoToButton.Location; DisplayText podaje etykietę wyświetlaną na przycisku w dokumencie.
API Reference Podsumowanie
| Klasa / Enum | Opis |
|---|---|
FieldIf | IF pole; LeftExpression, ComparisonOperator, RightExpression, TrueText, FalseText, EvaluateCondition() |
FieldIfComparisonResult | Wynik Enum FieldIf.EvaluateCondition(): True, False, Error |
FieldCompare | COMPARE pole; LeftExpression, ComparisonOperator, RightExpression |
FieldDocVariable | DOCVARIABLE pole; VariableName |
FieldGoToButton | GOTOBUTTON pole; Location, DisplayText |
FieldMacroButton | MACROBUTTON pole; MacroName, DisplayText |
FieldPrint | PRINT pole; PrinterInstructions, PostScriptGroup |