Вы можете добавить таблицы содержимого к отчету с помощью mlreportgen.report.TableOfContents
класс. Этот предопределенный класс автоматически добавляет в отчет отформатированную таблицу содержимого, содержащий заголовки отчетов. Гораздо проще и эффективнее использовать этот класс, а не использовать объекты DOM для создания таблицы содержимого. Для получения информации и примеров смотрите mlreportgen.report.TableOfContents
.
Кроме того, используя объекты DOM, можно создать таблицу содержимого в программе отчетов или использовать шаблон для определения оглавления. Чтобы создать TOC программно, добавьте mlreportgen.dom.TOC
объект вашему отчетному документу.
Использование шаблона гарантирует, что все программы отчетов, использующие этот шаблон, создают один и тот же тип оглавления. Кроме того, с шаблоном вы обновляете оглавление только в одном месте, если ваше форматирование изменяется.
При использовании шаблона можно:
Включите ссылку TOC в шаблон Word или в пакет шаблона HTML или PDF (root.html
).
Создайте шаблон детали документа для оглавления и вставьте его программно.
Используя любой из подходов, программа отчетов должна создать объекты заголовков, которые задают числовой уровень или объекты абзацев, которые задают уровень контура. Генератор ТОС использует содержимое с информацией об уровне для определения структуры.
DOM API поддерживает автоматическую генерацию таблицы содержимого документа. Чтобы включить автоматическую генерацию TOC:
Использование 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 TOC в шаблон документа Word или детали документа. Word заменяет ссылку TOC на автоматически сгенерированный TOC при обновлении документа.
Чтобы сгенерировать таблицу содержимого в отчете DOM Word с помощью шаблона, содержащего ссылку TOC:
Чтобы указать, где в отчете сгенерировать оглавление, создайте таблица ссылку на содержимое в шаблоне Word. См. «Создание ссылки на оглавление таблицы слов».
Установите уровни контуров головок сечений, которые необходимо отобразить в таблицу содержимого. См. Раздел «Задание уровней контуров головок сечений».
Обновление сгенерированного документа. См. раздел «Обновление ТОС в отчете Word».
Откройте шаблон в Word.
Щелкните, где необходимо создать таблицу содержимого.
На вкладке References нажмите Table of Contents.
Выберите опцию формата TOC, чтобы сгенерировать таблицу содержимого. Например, выберите опцию Built-In формата. Появится оглавление.
Сохраните шаблон.
Примечание
Если требуется использовать деталь документа для вставки оглавления, вставьте ссылку оглавления в шаблон детали документа. Перед сохранением удалите образец из шаблона. См. раздел «Создание библиотеки шаблонов деталей документов Microsoft Word и программная вставка заполнителя ТОС с использованием детали документа».
Для генерации оглавления необходимо обновить документ Word, содержащий ссылку на оглавление. В Windows® систем, DOM API rptview
команда использует Word для обновления отображаемого документа Word. Если вы открываете документ Word непосредственно, например, документ, сгенерированный DOM API в системе, отличной от Windows, необходимо обновить TOC.
В шаблоне Word выберите ссылку TOC.
На вкладке References нажмите Update Table.
В диалоговом окне Таблицы обновления содержимого выберите Update entire table и нажатие кнопки OK.
Когда вы используете PDF или HTML шаблон для добавления TOC, вы можете:
Включите заполнитель таблицы содержимого в основной шаблон (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
к количеству уровней заголовков, которые необходимо включить в TOC
Задайте 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
включает ссылку TOC.
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
включает ссылку TOC.
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
включает ссылку TOC.
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
и так далее можно убедиться, что в отчете используются стили по умолчанию для заголовков.