Можно добавить оглавление в отчет с помощью mlreportgen.report.TableOfContents класс. Этот предопределенный класс автоматически добавляет в отчет форматированное оглавление, содержащее заголовки отчетов. Гораздо проще и эффективнее использовать этот класс, а не объекты DOM для создания оглавления. Сведения и примеры см. в разделе mlreportgen.report.TableOfContents.
Кроме того, с помощью объектов DOM можно создать оглавление в программе отчетов или использовать шаблон для определения оглавления. Чтобы создать оглавление программным путем, добавьте mlreportgen.dom.TOC объект для документа отчета.
Использование шаблона гарантирует, что все программы отчетов, использующие этот шаблон, создадут один и тот же тип оглавления. Кроме того, шаблон обновляет оглавление только в одном месте при изменении форматирования.
При использовании шаблона можно выполнить одно из следующих действий:
Включить ссылку на оглавление в шаблон Word или в пакет шаблонов HTML или PDF (root.html).
Создайте шаблон детали документа для оглавления и вставьте деталь документа программным путем.
С помощью любого подхода программа отчетов должна создавать объекты заголовков, определяющие числовой уровень, или объекты абзацев, определяющие уровень структуры. Генератор оглавления использует содержимое с информацией об уровне для определения структуры.
DOM API поддерживает автоматическое создание оглавления документа. Чтобы включить автоматическое формирование оглавления:
Использовать Paragraph или заголовочные объекты (Heading, Heading1и т.д.) в документе для указания заголовков разделов. Если используется Paragraph объект для заголовка, необходимо задать параметры абзаца OutlineLevel для соответствующего значения, например, 1 для главы или другого заголовка верхнего уровня.
Вставьте в документ местозаполнитель оглавления, в котором требуется создать оглавление. Местозаполнитель оглавления можно вставить программно или в шаблон документа.
Чтобы программно создать местозаполнитель оглавления, добавьте mlreportgen.dom.TOC объект, в котором требуется создать оглавление. Можно указать количество уровней для включения в оглавление и тип выноски. По умолчанию используются три уровня и выноска с точками. В этом примере используются два уровня и выноска с точками.
import mlreportgen.dom.*; d = Document('mydoc','pdf'); open(d); title = append(d,Paragraph('My TOC Document')); title.Bold = true; title.FontSize = '28pt'; toc = append(d,TOC(2)); toc.Style = {PageBreakBefore(true)}; h1 = append(d,Heading1('Chapter 1')); h1.Style = {PageBreakBefore(true)}; p1 = append(d,Paragraph('Hello World')); h2 = append(d,Heading2('Section 1.1')); h2.Style = {PageBreakBefore(true)}; p2 = append(d,Paragraph('Another page')); h3 = append(d,Heading3('My Subsection 1.1.a')); p3 = append(d, Paragraph('My Level 3 Heading Text')); close(d); rptview(d.OutputPath);
Можно использовать Word для вставки объекта ссылки на содержание Word в документ Word или шаблон детали документа. Слово заменяет ссылку на оглавление автоматически создаваемым оглавлением при обновлении документа.
Чтобы создать оглавление в отчете DOM Word с использованием шаблона, содержащего ссылку на содержание, выполните следующие действия.
Чтобы указать, где в отчете создается оглавление, создайте ссылку на оглавление в шаблоне Word. См. раздел Создание ссылки на содержание Word.
Задайте уровни структуры заголовков разделов, которые должны отображаться в оглавлении. См. раздел Установка уровней структуры головок сечений.
Обновите созданный документ. См. раздел Обновление оглавления в отчете Word.
Откройте шаблон в Word.
Щелкните в том месте, где требуется создать оглавление.
На вкладке Ссылки (References) щелкните Оглавление (Table of Contents).

Выберите параметр формата оглавления для создания оглавления. Например, выберите параметр «Встроенный формат». Появится оглавление.

Сохраните шаблон.
Примечание
Если требуется использовать деталь документа для вставки оглавления, вставьте ссылку оглавления в шаблон детали документа. Перед сохранением удалите экземпляр из шаблона. См. разделы Создание библиотеки шаблонов деталей документа Microsoft Word и Программная вставка заполнителя оглавления с использованием детали документа.
Для создания оглавления необходимо обновить документ Word, содержащий ссылку на оглавление. В системах Windows ® интерфейс DOM APIrptview команда использует Word для обновления отображаемого документа Word. При открытии документа Word непосредственно, например, документа, созданного API DOM в системе, отличной от Windows, необходимо обновить оглавление.
В шаблоне Word выберите ссылку TOC.
На вкладке Привязки (References) щелкните Обновить таблицу (Update Table).
В диалоговом окне Обновить оглавление выберите Обновить всю таблицу и нажмите кнопку ОК.

При использовании шаблона PDF или HTML для добавления оглавления можно:
Включить местозаполнитель оглавления в основной шаблон (root.html) в пакете шаблона.
Включите местозаполнитель оглавления в шаблон детали документа.
Чтобы создать оглавление в отчете HTML или PDF с использованием шаблона детали документа, выполните следующие действия.
Определите шаблон детали документа, включающий местозаполнитель оглавления.
Программно вставьте деталь документа в отчет.
Использовать Paragraph или заголовочные объекты (Heading, Heading1и т.д.) для указания заголовков отчета. Если используется Paragraph объект для заголовка, необходимо установить его OutlineLevel для соответствующего значения.
Чтобы создать или изменить шаблон детали документа для оглавления, используйте код в следующей форме:
<dptemplate name="ReportTOC">
<TOC number-of-levels ="3" leader-pattern="dots" />
</dptemplate>
Вы можете:
Заменить ReportTOC с именем, которое вы предпочитаете
Набор number-of-levels до количества уровней заголовков, которые требуется включить в оглавление
Набор leader-pattern кому dots или в spaces
Пример см. в разделе Детали и отверстия документа PDF и HTML.
Используйте DocumentPart для вставки экземпляра детали документа, содержащего местозаполнитель оглавления. Если шаблон детали документа определен в шаблоне, при определении объекта документа следует включить имя пакета шаблона. Например:
d = Document('MyReport','html','MyTemplate');
В этом коде используется поставляемая позиция документа. ReportTOC в шаблоне по умолчанию для создания оглавления.
import mlreportgen.dom.*; d = Document('MyReport','pdf'); append(d,'My Report'); append(d,DocumentPart(d,'ReportTOC')); append(d,Heading1('Chapter 1')); append(d,Heading2('Section 1')); close(d); rptview(d.OutputPath);
Совет
Используйте переменную, назначенную Document объект в DocumentPart для использования шаблона детали документа, связанного с объектом документа:
append(d,DocumentPart(d,'ReportTOC'));
При использовании этого синтаксиса нет необходимости вызывать шаблон и указывать тип документа при ссылке на часть документа. Этот подход упрощает код и позволяет более эффективно создавать отчет.
Чтобы создать оглавление в отчете, программа должна установить уровни структуры заголовков разделов, которые требуется включить в содержимое. Уровень структуры - это свойство формата абзаца, указывающее, отображается ли содержимое абзаца в оглавлении и на каком уровне. Например, если абзац имеет уровень структуры 1, содержимое отображается на верхнем уровне создаваемого оглавления. Можно указать до девяти уровней структуры.
Чтобы задать общий уровень абзацев, используйте один из этих подходов.
Для задания уровня структуры абзаца можно использовать стили, определенные в шаблоне отчета. По умолчанию документы Word содержат набор стилей «Заголовок 1», «Заголовок 2» и т.д., определяющих уровни структуры. Программа может использовать эти встроенные стили, чтобы задать отображение этих заголовков в оглавлении. В этом примере используются определяемые шаблоном стили для задания уровней контура заголовков сечений и предполагается, что шаблон MyTemplate включает ссылку на оглавление.
import mlreportgen.dom.*; d = Document('MyReport','docx','MyTemplate'); append(d,Paragraph('Chapter 1','Heading 1')); append(d,Paragraph('Section 1','Heading 2')); close(d); rptview(d.OutputPath); % Updates the TOC
Можно также использовать Word или редактор HTML для определения собственных стилей заголовков, а затем использовать их для создания отчета.
Объекты форматирования можно использовать для задания уровней структуры. В этом примере предполагается, что шаблон MyTemplate включает ссылку на оглавление.
import mlreportgen.dom.*; d = Document('MyReport','docx','MyTemplate'); h1 = {FontFamily('Arial'),FontSize('16pt'),OutlineLevel(1)}; h2 = {FontFamily('Arial'),FontSize('14pt'),OutlineLevel(2)}; p = append(d,Paragraph('Chapter 1')); p.Style = h1; p = append(d,Paragraph('Section 1')); p.Style = h2; close(d); rptview(d.OutputPath); % Updates the TOC
Вы можете использовать mlreportgen.dom.Heading1 объект (и Heading2, Heading3и так далее) для определения уровней структуры. A Heading1 объект - это абзац, конструктор которого определяет его уровень структуры. Вы можете использовать Heading1 один объект или стили на основе шаблона или стили на основе объекта форматирования. В этом примере предполагается, что шаблон MyTemplate включает ссылку на оглавление.
import mlreportgen.dom.*; d = Document('MyReport','docx','MyTemplate'); h1 = {FontFamily('Arial'),FontSize('16pt')}; h2 = {FontFamily('Arial'),FontSize('14pt')}; h = append(d,Heading1('Chapter 1')); h.Style = h1; h = append(d,Heading2('Section 1')); p.Style = h2; close(d); rptview(d.OutputPath); % Updates the TOC
В отчетах HTML и PDF Heading1 и Heading2 объекты генерируют элементы HTML h1 и h2. С помощью объектов Heading1, Heading2и т.д. можно убедиться, что в отчете используются стили по умолчанию для заголовков.