Работа с таблицей содержимого
Часто вы будете работать с документами, содержащими таблицу содержимого (TOC). использовать Aspose.Words Вы можете вставить свою собственную таблицу содержимого или полностью перестроить существующую таблицу содержимого в документе, используя всего несколько строк кода.
В этой статье описано, как работать с полем таблицы содержания и показано:
- Как вставить новый TOC.
- Обновление новых или существующих ТОС в документе.
- Укажите переключатели для управления форматированием и общей структурой TOC.
- Как изменить стили и внешний вид таблицы содержимого.
- Как удалить целое
TOC
поле вместе со всеми записями из документа.
Включить таблицу содержимого программно
Вы можете вставить TOC
(таблица содержания) поле в документе на текущей позиции по вызову InsertTableOfContents метод.
Таблица содержимого в документе Word может быть построена несколькими способами и отформатирована с использованием различных опций. Переключатели поля, которые вы передаете методу, контролируют способ построения и отображения таблицы в вашем документе.
Переключатели по умолчанию, которые используются в TOC
вставленный в Microsoft Word есть ““О"1-3 \h \z \u. Описание этих переключателей, а также список поддерживаемых переключателей можно найти позже в статье. Вы можете либо использовать это руководство для получения правильных переключателей, либо если у вас уже есть документ, содержащий аналогичный. TOC
Вы можете показать коды полей (ALT+F9) и скопировать переключатели прямо из поля.
Следующий пример кода показывает, как вставить поле “Таблица содержимого” в документ:
Следующий пример кода показывает, как вставить таблицу содержимого (TOC) в документ, используя стили заголовков в качестве записей:
Код показывает, что новая таблица содержимого вставляется в чистый документ. The DocumentBuilder Затем класс используется для вставки некоторого форматирования содержимого образца с соответствующими стилями заголовков, которые используются для обозначения содержимого, которое должно быть включено в TOC. Следующие строки заполняют TOC
путем обновления полей и макета страницы документа.
TOC
поле, но без видимого содержания. Это потому, что TOC
Поле было вставлено, но еще не заселено, пока оно не будет обновлено в документе. Дополнительная информация об этом обсуждается в следующем разделе.
Обновление таблицы содержимого
Aspose.Words позволяет полностью обновить TOC
Всего несколько строк кода. Это можно сделать, чтобы заселить недавно введенный TOC
или для обновления существующего TOC
После внесения изменений в документ.
Для обновления необходимо использовать следующие два метода: TOC
поля в документе:
Обратите внимание, что эти два метода обновления должны быть названы в этом порядке. В обратном направлении таблица содержимого будет заполнена, но номера страниц не будут отображаться. Любое количество различных TOC может быть обновлено. Эти методы автоматически обновят все ТОС, найденные в документе.
Следующий пример показывает, как полностью восстановить TOC
поля в документе, ссылаясь на обновления поля:
Первый призыв к Document.updateFields() будет строить <span notrans="<span notrans=” TOC
"="">"> Все тексты заполнены и TOC
Кажется почти полным. Единственное, чего не хватает, так это номеров страниц, которые пока отображаются с “?”.
Второй призыв к Document.updatePageLayout() Построит макет документа в память. Это необходимо сделать, чтобы собрать номера страниц записей. Правильные номера страниц, рассчитанные по этому вызову, затем вставляются в TOC.
Используйте коммутаторы для управления поведением содержимого
Как и в любой другой области, TOC
Поле может принимать переключатели, определенные в коде поля, который контролирует, как построена таблица содержимого. Некоторые переключатели используются для контроля того, какие записи включены и на каком уровне, в то время как другие используются для контроля внешнего вида TOC. Коммутаторы могут быть объединены вместе, чтобы позволить создавать сложную таблицу содержимого.
По умолчанию эти переключатели выше включены при вставке по умолчанию TOC
в документе. А. TOC
без переключателей будет включать контент из встроенных стилей заголовков (как если бы переключатель \O установлен).
Доступный TOC
Переключатели, которые поддерживаются Aspose.Words Они перечислены ниже, и их использование подробно описано. Их можно разделить на отдельные разделы в зависимости от их типа. Переключатели в первом разделе определяют, какой контент включать в TOC
и переключатели во втором разделе контролируют внешний вид ТОС.
Если выключатель не указан здесь, то он в настоящее время не поддерживается. Все переключатели будут поддерживаться в будущих версиях. Мы добавляем дополнительную поддержку к каждому выпуску.
Вступление Marking Switchs
переключатель | Описание |
---|---|
Heading Styles (\O Switch) |
Этот переключатель определяет, что |
![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 будет рассматриваться как следующий уровень в иерархии и так далее.
*(\U switch)*
|
Каждый пункт может определять общий уровень в соответствии с вариантами пункта.
![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)
Этот параметр определяет, на каком уровне этот пункт должен рассматриваться в иерархии документов. Это широко используемая практика, используемая для легкой структуры макета документа. Эту иерархию можно увидеть, изменив ее на Outline View. Microsoft Word. Подобно стилям заголовков, в дополнение к уровню "Телотекст" могут быть уровни от 1 до 9 контуров. Контурные уровни 1 - 9 появятся в `TOC` на соответствующем уровне иерархии
Любое содержание с уровнем контура, либо установленным в стиле абзаца, либо непосредственно на самом абзаце, включено в ТОС. в Aspose.Words Очертания уровня представлены `ParagraphFormat.OutlineLevel` Собственность Параграфного узла. Очертания уровня стиля абзаца представлены таким же образом `Style.ParagraphFormat` собственность.
Обратите внимание, что встроенные стили заголовков, такие как заголовки 1, имеют обязательный уровень контура в настройках стиля.
*(\T switch)*
|
Этот переключатель позволит использовать пользовательские стили при сборе записей для использования в 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 в a `TOC` используется для указания того, что поля TC должны использоваться в качестве записей. Включение самостоятельно без дополнительного идентификатора означает, что в документ будет включено любое поле TC. Любой дополнительный параметр, часто одна буква, будет обозначать, что только поля TC, которые имеют соответствующий переключатель \f, будут включены в TOC. Например, *
{ TOC \f t }
Включает в себя только такие поля, как
{ TC \f t }
The `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)
The `TC` Сами поля также могут иметь {several, `multiple`, a few, `many`, numerous} Переключатели установлены. Это:
\F - Объяснено выше. *
L – определяет, какой уровень `TOC` Появится это поле ТК. А. `TOC` который использует этот же переключатель, будет включать это поле TC только в том случае, если оно находится в указанном диапазоне.
- _\N - Номер страницы для этого `TOC` Вход не отображается. Пример кода того, как вставить поля TC, можно найти в следующем разделе.
|Связанные с внешним видом коммутаторы
переключатель | Описание |
---|---|
Omit Page Numbers (\N Switch) |
Этот переключатель используется для скрытия номеров страниц для определенных уровней 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 Switch)* |
Этот переключатель указывает, что `TOC` Записи вставляются в виде гиперссылок. При просмотре документа в Microsoft Word Эти записи будут выглядеть как обычный текст внутри. `TOC` но являются гиперссылками и, таким образом, могут быть использованы для навигации к положению исходной записи в документе с помощью *Ctrl + Left Click* в 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 Switch)*
|
Этот переключатель позволяет легко изменять в TOC контент, разделяющий заголовок записи и нумерацию страницы. Сепаратор для использования должен быть указан после этого переключателя и заключен в речевые знаки.
Вопреки тому, что задокументировано в документации 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 Switch)* |
Использование этого переключателя будет указывать, что любые записи, которые имеют символ вкладки, например, заголовок, который имеет вкладку в конце строки, будут сохранены в качестве надлежащего символа вкладки при заполнении 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 Switch)*
|
Подобно переключателю выше, этот переключатель указывает, что заголовки, охватывающие несколько строк (с использованием символов новой строки, а не отдельных абзацев), будут сохранены, поскольку они находятся в генерируемом 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 Fields
Вы можете вставить новое поле TC в текущем положении DocumentBuilder
позвонив в DocumentBuilder.InsertField
метод и указание названия поля как “TC” вместе с любыми переключателями, которые необходимы.
Следующий пример кода показывает, как вставить TC
поле в документе с использованием DocumentBuilder.
Часто конкретная строка текста обозначается для TOC
и обозначается а TC
поле. Простой способ сделать это в MS Word - выделить текст и нажать ALT+SHIFT+O. Это автоматически создает TC
поле с использованием выбранного текста. Та же технология может быть реализована с помощью кода. Код ниже найдет текст, соответствующий входу, и вставит TC
поле в том же положении, что и текст. Код основан на той же технике, что и в статье. Следующий пример кода показывает, как найти и вставить TC
поле в тексте документа.
Изменить таблицу содержимого
Изменение форматирования стилей
Форматирование записей в TOC
не использует оригинальные стили отмеченных записей, вместо этого каждый уровень форматируется с использованием эквивалента; TOC
стиль. Например, первый уровень в TOC
форматируется с помощью TOC1 стиль, второй уровень форматируется с TOC2 стиль и так далее. Это означает, что для изменения внешнего вида TOC
Эти стили необходимо модифицировать. в Aspose.Words Эти стили представлены локально-независимыми StyleIdentifier.TOC1
через StyleIdentifier.TOC9
может быть извлечен из Document.Styles
Сбор данных с использованием этих идентификаторов.
После извлечения соответствующего стиля документа форматирование для этого стиля может быть изменено. Любые изменения этих стилей будут автоматически отражены в ТОС в документе.
Следующий пример кода изменяет свойство форматирования, используемое на первом уровне. TOC
стиль.
Также полезно отметить, что любое прямое форматирование параграфа (определяемого на самом параграфе, а не в стиле), помеченного как включённое в текст. TOC
Они будут скопированы в записи в TOC. Например, если стиль заголовка 1 используется для обозначения содержимого TOC
Этот стиль имеет смелое форматирование, в то время как абзац также имеет курсивное форматирование, непосредственно применяемое к нему. В результате TOC
Запись не будет смелой, так как это часть форматирования стиля, но она будет курсивом, поскольку это непосредственно отформатировано в пункте.
Вы также можете контролировать форматирование разделителей, используемых между каждой записью и номером страницы. По умолчанию это пунктирная линия, которая распространяется на нумерацию страницы с использованием символа вкладки и стопы правой вкладки, выстроенной близко к правому краю.
Используя Style
класс, полученный для конкретного TOC
Уровень, который вы хотите изменить, вы также можете изменить, как они отображаются в документе.
Чтобы изменить то, как это выглядит в первую очередь Style.ParagraphFormat
должен быть вызван, чтобы получить форматирование абзаца для стиля. Из этого, остановки вкладки можно извлечь, позвонив ParagraphFormat.TabStops
и соответствующие вкладки перестают изменяться. Используя эту же технику, саму вкладку можно перемещать или вообще удалять.
Следующий пример кода показывает, как изменить положение остановки правой вкладки в TOC
соответствующих параграфов.
Удалить таблицу содержимого из документа
Таблица содержимого может быть удалена из документа путем удаления всех узлов, найденных между FieldStart
Полевой узел (полевой узел) TOC
поле.
Приведенный ниже код демонстрирует это. Удаление этого TOC
Поле проще, чем обычное поле, так как мы не отслеживаем вложенные поля. Вместо этого мы проверяем FieldEnd
Узел имеет тип FieldType.FieldTOC
Это означает, что мы столкнулись с концом нынешнего ТОС. Этот метод может быть использован в этом случае, не беспокоясь о каких-либо вложенных полях, поскольку мы можем предположить, что любой правильно сформированный документ не будет полностью вложен. TOC
поле внутри другого TOC
поле.
Во-первых, FieldStart
узлы каждого TOC
собираются и хранятся. указанный TOC
Затем перечисляется, чтобы все узлы в поле посещались и хранились. Затем узлы удаляются из документа. Следующий пример кода показывает, как удалить указанный TOC
Из документа.
Экстрактная таблица содержимого
Если вы хотите извлечь таблицу содержимого из любого документа Word, можно использовать следующий образец кода.