Робота з Змістом

Часто ви будете працювати з документами, що містять таблицю змісту (TOC). Використання Aspose.Words Ви можете вставляти свій власний таблицю змісту або повністю перебудувати існуючий таблицю змісту в документі за допомогою всього декількох рядків коду.

У статті описано, як працювати з таблицею поля контенту та демонструє:

  • Як вставити бренд новий TOC.
  • Оновлення нових або існуючих TOC в документі.
  • Вкажіть перемикачі для керування форматуванням та загальною структурою ТЗ.
  • Як змінити стилі і зовнішній вигляд таблиці змісту.
  • Як видалити всю TOC поле разом з усіма записами з документа.

Вставте таблицю змісту программатично

Ви можете вставити TOC (табл. змісту) поле в документ на поточному положенні за викликом InsertTableOfContents метод.

Таблиця змісту у документі Word може бути побудована кількома способами і форматовано за допомогою різних варіантів. Увімкнено поле, що ви передаєте до методу управління способом, таблиця побудована і відображається у вашому документі.

Перемикачі за замовчуванням, які використовуються в TOC вставки Microsoft Word Р **""\o “1-3 \h \z \u”**й Описи цих вимикачів, а також перелік підтримуваних перемикачів можна знайти пізніше в статті. Якщо ви вже маєте документ, що містить аналогічний TOC ви хочете показати коди поля (ALT+F9) і скопіювати перемикачі безпосередньо з поля.

Приклад коду показує, як вставити таблицю поля змісту в документ:

Приклад коду показує, як вставити таблицю змісту (TOC) в документ, використовуючи стилі заголовків як записи:

Введіть номер мобільного, який Ви вказали при укладаннi договору з банком - для ідентифікації. Про нас DocumentBuilder клас потім використовується для вставки деяких форматів вмісту зразка з відповідними заголовками стилі, які використовуються для позначення вмісту, який буде включений в TOC. Наступні рядки потім з’єднають TOC шляхом оновлення полів та макету сторінки документа.

insert-table-of-contents-field-aspose-words-java

Оновлення таблиці змісту

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

Для оновлення потрібно використовувати наступні два способи TOC поля в документі:

  1. Document.updateFields()
  2. Document.updatePageLayout()

Будь ласка, зверніть увагу, що ці два способи оновлення повинні бути викликані в цьому порядку. Якщо перевернути таблицю змісту буде опубліковано, але не буде відображатися номер сторінки. Будь-яка кількість різних TOC можна оновити. Ці методи автоматично оновлюватимуть всі ТЦ, знайдені в документі.

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

Перший виклик Document.updateFields() побудувати TOC, > всі текстові записи заселені і TOC з’являється практично повністю. Єдине, що не вистачає сторінок, які зараз відображаються з “?”.

Другий виклик Document.updatePageLayout() побудувати макет документа в пам’яті. Для збирання номерів сторінок. Виправте номери сторінок, розраховані з цього виклику, потім вставляються в TOC.

Використовуйте перемикачі для контролю таблиці змісту

Як і будь-яке інше поле, TOC поле може приймати перемикачі, визначені в Полікоді, які контролює, як будується таблиця вмісту. Деякі перемикачі використовуються для контролю, які записи включені і на якому рівні, а інші використовуються для контролю зовнішнього вигляду TOC. Вимикачі можуть поєднуватися між собою, щоб забезпечити складний стіл контенту, який буде виготовлений.

ccontrol-table-of-contents-field-aspose-words-java

За замовчуванням, ці перемикачі вище включені при вставці за замовчуванням TOC у документі. Р TOC без перемикачів буде включати вміст з вбудованих стилів заголовка (як якщо наведено перемикач \O).

Доступний TOC перемикачі, які підтримуються Aspose.Words Нижче описуються і їх використання. Їх можна розділити на окремі розділи на основі їх типу. Перемикачі в першому розділі визначають те, що вміст включено в TOC і перемикачі в другій секції контролюють зовнішній вигляд TOC.

Якщо перемикач не зазначений тут, то він наразі не підтримується. Всі перемикачі будуть підтримуватися в наступних версіях. Ми додаємо підтримку кожного релізу.

Вимикачи для маркування записів

Перемикач Опис
Heading Styles
(\O перемикач)

Цей перемикач визначає, що TOC повинен бути вбудованим заголовком стилів. У Microsoft Word, вони визначаються заголовуванням 1 - Заголовок 9. У Aspose.Words ці стилі представлені відповідною студією StyleIdentifier. Ця анумерація являє собою локальний ідентифікатор стилю, наприклад, StyleIdentifier.Heading1 являє собою заголовок 1 стиль. Використання цього форматування та властивостей стилю можна отримати з колекції стилів документа. Клас відповідного стилю можна отримати з Document.Styles збір за допомогою індексованого майна типу StyleIdentifier.

![style-table-of-contents-field-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-3.png)



Будь-який контент, відформатований цими стилями, входить до таблиці змісту. Рівень заголовка визначить відповідний ієрархічний рівень входу в ТОК. Наприклад, абзац з заголовуванням 1 стиль буде розглядатися як перший рівень `TOC` У той час як абзац з заголовуванням 2 буде розглядатися як наступний рівень в ієрархії і так далі.

| | **Outline Levels**
*(\U перемикач)*
|

Кожен пункт може визначити рівень контуру за параметрами пункту.

![modify-table-of-contents-field-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-4.png)



Цей параметр диктує, які вирівняти цей пункт слід розглядати в ієрархії документа. Це загальноприйнята практика, яка використовується для легко структурування макета документа. Цей ієрархія можна переглянути, змінивши на зовнішній вигляд Microsoft Wordй Подібно до заголовків стилів, може бути 1 – 9 рівнів, крім рівня "Body Text". Зовнішні рівні 1 - 9 з'явиться в `TOC` у відповідному рівні ієрархії
Будь-який вміст з рівнем контуру або встановленим в стилі абзацу або безпосередньо на сам абзац включений в TOC. У Aspose.Words Рівень контуру представлений рівнем контуру `ParagraphFormat.OutlineLevel` майно параграфа вузла. Рівень контуру стилю представлений таким же чином `Style.ParagraphFormat` майно.

| | **Custom Styles**
*(\T перемикач)*
|

Цей перемикач дозволить використовувати користувацькі стилі при зборі записів для використання в TOC. Це часто використовується в поєднанні з перемикачем \ O, щоб включати спеціальні стилі разом з вбудованими головуванням стилів в TOC.
Параметри перемикача повинні бути укладені в межах мовних знаків. Багато користувацьких стилів можна включити, для кожного стилю, ім'я повинна бути зазначена за допомогою коми за рівнем, який стиль повинен з'явитися в стилі `TOC` як. Подальші стилі також відокремлюються комою і.
Зареєструватися

{ TOC \o "1-3" \t "CustomHeading1, 1,   CustomHeading2, 2"}

використовувати стиль вмісту з CustomHeading1 як рівень 1 вмісту в `TOC` і CustomHeading2 як рівень 2.

| | Використання TC поля
*(\F і \L перемикачі) *
|

У старших версіях Microsoft Word, єдиний спосіб побудови `TOC` було використання полів ТЦ. Ці поля вставляють приховані в документ, навіть якщо відображаються коди поля. Вони включають текст, який повинен відображатися в записі і `TOC` Будується з них. Цей функціонал тепер не використовується дуже часто, але може бути корисним в деяких випадках, щоб включати записи в `TOC` які не відступають, щоб бути видимими в документі.
При вставленні цих полів з'являються приховані навіть при відображенні поля. Не можна побачити без показу прихованого вмісту. Щоб побачити ці поля Показати форматування абзаців необхідно вибрати.

![setup-table-of-contents-field-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-5.png)

Ці поля можуть бути вставлені в документ на будь-якій позиції, як будь-який інший поле, і представлені `FieldType.FieldTOCEntry` заохочення.
Перемикач \F в `TOC` використовується для позначення, що поля TC повинні бути використані як записи. Перемикач самостійно без додаткового ідентифікатора означає, що будь-яке поле TC в документі буде включено. Будь-який додатковий параметр, часто один лист, спроектуватиме, що тільки поля TC, які мають відповідні \f перемикач буде включений в TOC. Наприклад *

{ TOC \f t }

буде містити лише поля TC, такі як

{ TC \f t }

Про нас `TOC` поле також має пов'язаний перемикач, перемикач "\L" визначає, що тільки поле TC з рівнями в зазначеному діапазоні включено.

![table-of-contents-field-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-6.png)



Про нас `TC` полів також можуть мати `{several, multiple, a few, many, numerous}` комплект вимикачів. Це:

- \F - Виключені вище. Ім'я *

- \L - Дефіни, які рівні в `TOC` це поле TC з'явиться в. Р `TOC` який використовує цей самий перемикач буде включати в себе це поле TC, якщо він знаходиться в зазначеному діапазоні.

- `_\N` - Номер сторінки для цього `TOC` запис не відображається. Приклад коду як вставити поля TC можна знайти в наступному розділі.

|

Зовнішній вигляд Схожі перемикачі

Перемикач Опис
Omit Page Numbers
(\N перемикач)

Цей перемикач використовується для приховувати номери сторінок для певних рівнів TOC. Наприклад, можна визначити

{TOC \o "1-4" \n "3-4" }

і номери сторінок на записах рівнів 3 і чотири будуть приховані разом з лідерами точок (якщо є будь-який). Щоб визначити лише один рівень, потрібно використовувати діапазон, наприклад, "1-1" виключить лише номери сторінок для першого рівня.
Постачання не діапазону рівня буде примітити номери сторінок для всіх рівнів в TOC. Це корисно для установки при експорті документа в HTML або аналогічний формат. Це тому, що HTML-формати не мають ніякої концепції сторінки, і таким чином, не потрібна кількість сторінок.

![table-of-contents-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-7.png)

| | Вставити як гіперпосилання
*(\H перемикач)* |

Цей перемикач визначає, що `TOC` записи вставляються як гіперпосилання. При перегляді документа в Microsoft Word ці записи все ще з'являються як звичайний текст всередині `TOC` але є гіперпосилання і, таким чином, може бути використаний для навігації в положення оригінального входу в документ за допомогою *Ctrl + клацніть лівою кнопкою миші * в Microsoft Wordй Коли цей перемикач включений, то ці посилання також зберігаються в інших форматах. Наприклад, в HTML-форматах, включаючи EPUB і продаються формати, такі як PDF і XPS, вони будуть експортовані як робочі посилання.
Без цього перемикача, `TOC` у всіх цих виходах буде експортований як звичайний текст і не продемонструвати цю поведінку. Якщо документ відкривається в MS Word текст записів також не буде клацнути таким чином, але номери сторінок все ще можуть бути використані для навігації до оригінального запису.

![tree-table-of-contents-field-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-8.png)

| | **Set Separator Character**
*(\P перемикач)*
|

Цей перемикач дозволяє відокремити заголовок запису та номер сторінки, щоб легко змінюватися в ТЗ. Сепаратор повинен бути зазначений після цього вимикача і закривається в мовних знаках.
Приміряти, що документується в документації Office, можна використовувати тільки один символ замість п'яти. Це стосується як MS Word і Aspose.Wordsй
Використання цього перемикача не рекомендується, оскільки він не дозволяє багато контролювати, що він використовується для окремих записів та номерів сторінок в TOC. замість цього рекомендується редагувати відповідні `TOC` стиль, такі як `StyleIdentifier.TOC1` і звідти відредагувати стиль лідера з доступом до певних членів шрифту тощо. Детальніше про те, як зробити це можна пізніше в статті.

![list-table-of-contents-field-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-9.png)

| | **Preserve Tab Entries**
*(\W перемикач)* |

За допомогою цього перемикача вкажіть, що будь-які записи, які мають символ вкладки, наприклад, заголовок, що має вкладку в кінці рядка, будуть зберігатися як правильний символ вкладки при популуванні TOC. Це означає функцію символу вкладки буде присутній в `TOC` і може використовуватися для форматування запису. Наприклад, деякі записи можуть використовувати вкладки і символи вкладок, щоб рівномірно розташувати текст. Довгий час `TOC` рівень визначає еквівалентні вкладки, після чого сформований `TOC` записи з'являться з схожою обшивкою.

У тій же ситуації, якщо цей вимикач не визначений, то символи вкладки будуть перетворені на білий простір, еквівалентний нефункціональним вкладкам. Після цього вихід не буде виглядати як очікувано.

![tab-table-of-contents-field-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-10.png)

| | **Preserve New Line Entries**
*(\X перемикач)*
|

Подібно до перемикача вище, цей перемикач визначає, що заголовки, що простягаються на декількох лініях (з використанням нових символів, не окремих абзаців) будуть збережені як вони в генераному TOC. Наприклад, заголовок, яка полягає в тому, щоб поширюватися через декілька рядків, може використовувати новий символ лінії (Ctrl + Enter або `ControlChar.LineBreak`) відокремити вміст по різних лініях. За допомогою цього перемикача вказаний запис в `TOC` зберігати ці нові символи рядків, як показано нижче.

У цій ситуації, якщо перемикач не визначений, то нові символи лінії перетворюються на єдиний білий простір.

![tab-space-table-of-contents-field-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-11.png)

|

Вставити ТК поля

Ви можете вставити нове поле TC на поточному положенні DocumentBuilder за викликом DocumentBuilder.InsertField метод і вказати назву поля як “TC” разом з будь-якими перемикачами, які необхідні.

Приклад наступного коду показує, як вставити TC поле в документ, використовуючи DocumentBuilderй

Нерідко для конкретної лінії тексту позначається певна лінія тексту TOC і позначений TC поле. Простий спосіб зробити це в MS Word, щоб виділити текст і натисніть ALT+SHIFT+O. Це автоматично створює TC поле за допомогою вибраного тексту. Така ж техніка може бути виконана за допомогою коду. Введіть номер мобільного, який Ви вказали при укладаннi договору з банком - для ідентифікації TC поле в одному положенні як текст. Код базується на тій же техніці, яка використовується в статті. Приклад коду показує, як знайти і вставити TC поле в тексті в документі.

Змінення таблиці змісту

Зміна форматування стилів

Форматування записів у форматі TOC не використовує оригінальні стилі позначених записів, замість цього кожен рівень відформатований за допомогою еквівалентного TOC стиль. Наприклад, перший рівень TOC відформатований з ТЦ1 стиль, другий рівень відформатований з ТЦ2 стиль і так далі. Це означає, що змінити зовнішній вигляд TOC ці стилі повинні бути змінені. У Aspose.Words ці стилі представлені місцевими StyleIdentifier.TOC1 через StyleIdentifier.TOC9 і можна отримати з Document.Styles збір за допомогою цих ідентифікаторів.

Після відповідного стилю документа було отримано форматування для цього стилю. Будь-які зміни до цих стилів будуть автоматично відображені в документі.

Приклад коду змінює форматування майна, що використовується в першому рівні TOC стиль.

Також корисно відзначити, що будь-який прямий форматування абзацу (визначено на самому абзацу і не в стилі) позначений, що буде включений до TOC буде скопійовано в записі в TOC. Наприклад, якщо заголовок 1 стиль використовується для позначення вмісту для TOC і цей стиль має сміливе форматування, в той час як абзац також має italic форматування безпосередньо на нього. В результаті TOC запис не буде сміливим, оскільки це частина форматування стилів, проте це буде italic, оскільки це безпосередньо відформатовано на пункті.

Ви також можете керувати форматуванням сепараторів, що використовуються між кожним входом та номером сторінки. За замовчуванням, це пунктирна лінія, яка поширюється на номер сторінки, використовуючи символ вкладки та праву зупинку вкладок, розташовану поруч з правим запасом.

Використання Style клас, отриманий для конкретного TOC рівень, який ви хочете змінити, ви також можете змінити, як це з’являється в документі.

Щоб змінити, як це з’являється вперше Style.ParagraphFormat повинні бути викликані, щоб отримати форматування абзаців для стилю. Від цього вкладки можна отримати за допомогою виклику ParagraphFormat.TabStops і відповідна кнопка зупинки змінного струму. Використовуючи цю ж техніку, сам вкладок може бути переміщений або видалений.

Приклад наступного коду показує, як змінити позицію зупинки правої вкладки в TOC пов’язані абзаци.

Видалити таблицю змісту з документа

Зміст може бути видалений з документа шляхом видалення всіх вузлів, знайдених між документом FieldStart і FieldEnd вершини TOC поле.

Код нижче показує це. Видалення видалення TOC поле простіша, ніж нормальне поле, так як ми не стежимо за в’язаними полями. Замість ми перевіряємо FieldEnd вузол типу FieldType.FieldTOC що означає, що ми зустрілися з закінченням поточного TOC. Ця методика може бути використана в цьому випадку, не турбуючись про будь-які незручні поля, як ми можемо припустити, що будь-який належним чином сформований документ не буде повністю непристойний TOC поле в іншому TOC поле.

Спочатку FieldStart вузли кожного TOC зібрані та зберігаються. Вказаний TOC потім занурюється так, що всі вузли в межах поля подаються і зберігаються. Потім виводяться вузли з документа. Приклад коду показує, як видалити зазначений код TOC з документа.

Витягувати таблицю змісту

Якщо ви хочете витягти таблицю змісту з будь-якого документа Word, можна використовувати наступний зразок коду.