Замінити поля з статичним текстом
Перезавантаження полів часто необхідно при бажанні зберегти ваш документ як статичну копію. Наприклад, при надсиланні в електронному вигляді на електронну пошту. Перетворення полів, таких як DATE
або TIME
до статичного тексту дозволить документу відображати однакову дату, коли він був відправлений. Також в деяких ситуаціях можна видалити умовний режим IF
поля з вашого документа і замініть їх за допомогою останнього текстового результату. Наприклад, перетворення результату IF
поле до статичного тексту, так що він не буде динамічно змінювати його значення, коли поля в документі оновлюються.
Схема нижче показує, як показано IF
поле зберігається в документі:
- Текст оточений спеціальними польовими вузлами – FieldStart і FieldEnd
- до FieldSeparator вершина відокремлює текст у полі в польовий код і результат поля
- код поля визначає загальну поведінку поля, в той час як результат поля зберігає найсвіжіші результати, коли це поле оновлюється за допомогою Microsoft Word або Aspose.Words
- результат поля, що зберігається в полі і відображається в документі при перегляді
Структура також може бути показано нижче в ієрархічному вигляді за допомогою ієрархічної форми демо-проект * “ДокументExplorer”*.
Поля, які не можуть бути замінені на текст
Заміна поля статичним текстом не працює належним чином для деяких полів в заголовку або нижній колонтитул.
Наприклад, намагаючись перетворити 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") |