Замінити поля з статичним текстом

Перезавантаження полів часто необхідно при бажанні зберегти ваш документ як статичну копію. Наприклад, при надсиланні в електронному вигляді на електронну пошту. Перетворення полів, таких як DATE або TIME до статичного тексту дозволить документу відображати однакову дату, коли він був відправлений. Також в деяких ситуаціях можна видалити умовний режим IF поля з вашого документа і замініть їх за допомогою останнього текстового результату. Наприклад, перетворення результату IF поле до статичного тексту, так що він не буде динамічно змінювати його значення, коли поля в документі оновлюються.

Схема нижче показує, як показано IF поле зберігається в документі:

  • Текст оточений спеціальними польовими вузлами – FieldStart і FieldEnd
  • до FieldSeparator вершина відокремлює текст у полі в польовий код і результат поля
  • код поля визначає загальну поведінку поля, в той час як результат поля зберігає найсвіжіші результати, коли це поле оновлюється за допомогою Microsoft Word або Aspose.Words
  • результат поля, що зберігається в полі і відображається в документі при перегляді

update-remove-a-field-aspose-words

Структура також може бути показано нижче в ієрархічному вигляді за допомогою ієрархічної форми демо-проект * “ДокументExplorer”*.

update-remove-a-field-aspose-words-2

Поля, які не можуть бути замінені на текст

Заміна поля статичним текстом не працює належним чином для деяких полів в заголовку або нижній колонтитул.

Наприклад, намагаючись перетворити PAGE поле в заголовку або нижній колонтитул до статичного тексту призведе до того ж значення, що відображається на всіх сторінках. Це тому, що заголовки та піддони повторюються через кілька сторінок, і коли вони залишаються як поля, вони обробляються особливо так, щоб вони відображали правильний результат для кожної сторінки.

Однак в заголовку, PAGE поле добре перекладається на статичний запуск тексту. Цей курс буде оцінювати, якби він був останню сторінку в розділі, яка призведе до виникнення будь-якого PAGE поле в заголовку для відображення останньої сторінки над усіма сторінками.

Наприклад, наступний код показує, як замінити поле за допомогою останнього результату:

КОМПЛЕКС

Конвертувати деякі типи поля в певних частинах документа

З моменту ConvertFieldsToStaticText метод приймає два параметри – CompositeNode властивості і властивості FieldType занурення, можна пройти будь-який композитний вузол до цього методу. Це дозволяє полям перетворюватися на статичний текст тільки в певних частинах документа.

Наприклад, можна пропустити Document об’єкт і конвертування полів вказаного типу з усього документа в статичний текст, або ви можете перенести Body об’єкт розділу і тільки перетворюйте поля, знайдені в цьому тілі.

Про нас FieldType занурення передано до ConvertFieldsToStaticText метод визначає, який тип поля слід конвертувати в статичний текст. Будь-який інший тип поля, знайдений в документі, буде залишатися незмінним.

Приклад коду показує, як вибрати поля конкретного типу – targetFieldType в певній вершині – compositeNode а потім перетворюйте їх в статичний текст:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
public class FieldsHelper
{
/// <summary>
/// Converts any fields of the specified type found in the descendants of the node into static text.
/// </summary>
/// <param name="compositeNode">The node in which all descendants of the specified FieldType will be converted to static text.</param>
/// <param name="targetFieldType">The FieldType of the field to convert to static text.</param>
public static void ConvertFieldsToStaticText(CompositeNode compositeNode, FieldType targetFieldType)
{
compositeNode.Range.Fields.Cast<Field>().Where(f => f.Type == targetFieldType).ToList().ForEach(f => f.Unlink());
}
}

Приклад наступного коду показує, як перетворити всі IF поля в документі на статичний текст:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Linked fields.docx")
# Pass the appropriate parameters to convert all IF fields encountered in the document (including headers and footers) to text.
for f in doc.range.fields :
if f.type == aw.fields.FieldType.FIELD_IF :
f.unlink()
# Save the document with fields transformed to disk
doc.save(docs_base.artifacts_dir + "WorkingWithFields.convert_fields_in_document.docx")

Приклад наступного коду показує, як перетворити всі PAGE поля в тілі документа на статичний текст:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Linked fields.docx")
# Pass the appropriate parameters to convert PAGE fields encountered to text only in the body of the first section.
for f in doc.first_section.body.range.fields :
if f.type == aw.fields.FieldType.FIELD_PAGE :
f.unlink()
doc.save(docs_base.artifacts_dir + "WorkingWithFields.convert_fields_in_body.docx")

Приклад наступного коду показує, як перетворити всі IF поля в останньому пункті статичного тексту:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Linked fields.docx")
# Pass the appropriate parameters to convert all IF fields to text that are encountered only in the last
# paragraph of the document.
for f in doc.first_section.body.last_paragraph.range.fields :
if f.type == aw.fields.FieldType.FIELD_IF :
f.unlink()
doc.save(docs_base.artifacts_dir + "WorkingWithFields.test_file.docx")