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

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

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

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

update-remove-a-field-aspose-words

Структура також може бути показано нижче в ієрархічному вигляді за допомогою демо проекту “DocumentExplorer”, які кораблі з Aspose.Words монтажник.

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

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

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

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

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

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

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(getMyDir() + "Linked fields.docx");
doc.unlinkFields();

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

З моменту 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-Java
private static class FieldsHelper extends DocumentVisitor {
/**
* Converts any fields of the specified type found in the descendants of the node into static text.
*
* @param compositeNode The node in which all descendants of the specified FieldType will be converted to static text.
* @param targetFieldType The FieldType of the field to convert to static text.
*/
public static void convertFieldsToStaticText(CompositeNode compositeNode, int targetFieldType) throws Exception {
for (Field field : compositeNode.getRange().getFields())
{
if (field.getType() == targetFieldType)
{
field.unlink();
}
}
}
}

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

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(getMyDir() + "Linked fields.docx");
// Pass the appropriate parameters to convert all IF fields encountered in the document (including headers and footers) to text.
for (Field field : doc.getRange().getFields()) {
if (field.getType() == FieldType.FIELD_IF) {
field.unlink();
}
}
doc.save(getArtifactsDir() + "WorkingWithFields.ConvertFieldsInDocument.docx");

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

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(getMyDir() + "Linked fields.docx");
// Pass the appropriate parameters to convert PAGE fields encountered to text only in the body of the first section.
for (Field field : doc.getRange().getFields()) {
if (field.getType() == FieldType.FIELD_PAGE) {
field.unlink();
}
}
doc.save(getArtifactsDir() + "WorkingWithFields.ConvertFieldsInBody.docx");

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

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(getMyDir() + "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 (Field field : doc.getFirstSection().getBody().getLastParagraph().getRange().getFields()) {
if (field.getType() == FieldType.FIELD_IF) {
field.unlink();
}
}
doc.save(getArtifactsDir() + "WorkingWithFields.TestFile.docx");