Создание полей с помощью FieldBuilder

Создание полей с помощью FieldBuilder

Создание полей с FieldBuilder

Это руководство показывает, как создать поле Word с нуля в Aspose.Words FOSS для .NET, используя FieldBuilder and FieldArgumentBuilder, вместо того чтобы работать с уже существующим полем в документе. Для чтения, обновления или удаления существующих полей см. Работа с полями руководство.


Создание поля с FieldBuilder

FieldBuilder создает поле из токенов кода поля— аргументов и переключателей. Создайте его с помощью new FieldBuilder(fieldType), передавая FieldType поля, которое вы хотите построить. Добавляйте аргументы с помощью перегруженного метода AddArgument(argument), который принимает string, int, double, вложенный FieldBuilder или FieldArgumentBuilder. Добавляйте переключатели с помощью перегруженных методов AddSwitch(switchName), AddSwitch(switchName, switchArgument) (string) или AddSwitch(switchName, switchArgument) (int/double).


Вставка построенного поля

После того как у FieldBuilder есть аргументы и переключатели, вызовите BuildAndInsert(refNode), чтобы вставить его в документ— одна перегрузка принимает узел Inline и вставляет поле перед ним, другая принимает Paragraph и вставляет поле в конец этого абзаца.


Создание сложных аргументов с FieldArgumentBuilder

FieldArgumentBuilder создает сложный аргумент поля, состоящий из полей, узлов и обычного текста, для случаев, когда один аргумент требует больше, чем простая строка. Создайте его с помощью new FieldArgumentBuilder(), затем вызовите AddText(text), чтобы добавить обычный текст, AddNode(node), чтобы добавить узел Inline, или AddField(fieldBuilder), чтобы вложить другое поле (созданное с помощью собственного FieldBuilder) внутрь аргумента. Передайте завершенный FieldArgumentBuilder в FieldBuilder.AddArgument(argument), чтобы использовать его в качестве одного из аргументов внешнего поля.


Советы и лучшие практики

  • Используйте FieldBuilder, когда создаете тип поля, который не поддерживается одним из специальных классов полей (например, FieldDate или FieldSymbol), либо когда генерируете коды полей программно из данных, а не вручную.
  • Вложите дочернее поле в аргумент внешнего поля с помощью FieldBuilder.AddArgument(FieldBuilder) для простого случая, либо создайте смешанный аргумент из текста, узлов и вложенных полей с помощью FieldArgumentBuilder, когда аргумент состоит более чем из одного поля.
  • Выберите перегрузку BuildAndInsert(refNode), соответствующую месту, куда вы хотите поместить поле — перед конкретным узлом Inline или в конец Paragraph.
  • После BuildAndInsert обращайтесь с результатом как с любым другим полем в дереве — например, вызовите Update() для него, если тип поля требует явного пересчёта.

Распространённые проблемы

ПроблемаПричинаИсправление
BuildAndInsert направлен в неправильное местоДля предполагаемой точки вставки использована неправильная перегрузкаПередайте узел Inline, чтобы вставить перед ним, или Paragraph, чтобы вставить в его конец
Аргумент поля не принимает одновременно обычный текст и узелAddArgument был вызван с одиночным string/int/double вместо составного аргументаСформируйте смешанный аргумент с помощью FieldArgumentBuilder (AddText, AddNode, AddField) и передайте его в AddArgument
Значение переключателя не распознаётся в сгенерированном коде поляAddSwitch(switchName) был использован, хотя переключателю действительно требуется аргументИспользуйте перегрузку AddSwitch(switchName, switchArgument) со строковым, целочисленным или double-значением переключателя

FAQ

Когда следует использовать FieldBuilder вместо вставки готового кода поля?

Используйте FieldBuilder, когда вам нужен явный контроль над аргументами и переключателями поля при их программном построении, а не при вставке готовой строки кода поля.

Как добавить более одного аргумента к полю?

Вызовите AddArgument один раз на каждый аргумент — он перегружен для string, int, double, вложенного FieldBuilder и FieldArgumentBuilder.

Могу ли я создать поле, аргумент которого содержит смесь текста и другого поля?

Да — используйте FieldArgumentBuilder, вызывая AddText, AddNode и AddField по мере необходимости, затем передайте его в FieldBuilder.AddArgument.

Как фактически поместить построенное поле в документ?

Вызовите BuildAndInsert(refNode), передавая либо узел Inline (вставка перед ним), либо Paragraph (вставка в его конец).


API Reference Сводка

Класс/МетодОписание:
FieldBuilderСоздаёт поле из токенов кода поля (аргументы и переключатели)
FieldBuilder(fieldType)Конструктор, принимающий FieldType для построения
FieldBuilder.AddArgument(argument)Добавляет аргумент (string, int, double, FieldBuilder или FieldArgumentBuilder)
FieldBuilder.AddSwitch(switchName) / AddSwitch(switchName, switchArgument)Добавляет переключатель поля, сзначением или без него
FieldBuilder.BuildAndInsert(refNode)Вставляет построенное поле перед узлом Inline или в конец Paragraph
FieldArgumentBuilderСоздаёт сложный аргумент поля из текста, узлов и вложенных полей
FieldArgumentBuilder.AddText(text)Добавляет простой текст к аргументу
FieldArgumentBuilder.AddNode(node)Добавляет узел Inline к аргументу
FieldArgumentBuilder.AddField(fieldBuilder)Встраивает поле, построенное FieldBuilder, в аргумент

См. также:

 Русский