В отчетах Word и PDF можно создавать колонтитулы страниц. Можно создать колонтитулы страниц в каждом макете для каждого из следующих типов страниц:
Первая страница раздела
Четные страницы
нечетные страницы, которые включают первую страницу, если не указан верхний или нижний колонтитул первой страницы;
Можно создавать верхние и нижние колонтитулы страниц отчета программно или в шаблоне для использования с отчетом. Можно добавить содержимое в нижние колонтитулы.
При открытии отчета интерфейс DOM API:
Считывает верхние и нижние колонтитулы из шаблона и преобразует их в PDF или DOCX PageHeader и PageFooter объекты
Связывает верхние и нижние колонтитулы с DOCX или PDF PageLayout объект, определяющий свойства раздела, содержащего колонтитулы
Добавляет верхние и нижние колонтитулы к отчету по мере перехода кода к разделам, определенным шаблоном
Когда программа отчетов перемещает разделы, она может добавлять содержимое в определенные шаблоном колонтитулы.
Можно вставить верхние и нижние колонтитулы страниц в основной шаблон или в шаблон детали документа. Подход отличается для Word и для PDF.
Каждая страница документа Word имеет колонтитулы, которые можно редактировать. Чтобы включить режим редактирования, дважды щелкните область колонтитулов. Либо на вкладке Вставка слова в разделе Колонтитулы щелкните стрелку кнопки Колонтитулы. В меню выберите соответствующую команду «Редактировать». По завершении редактирования верхнего или нижнего колонтитула на вкладке «Инструменты для верхнего и нижнего колонтитулов» «Дизайн» выберите «Закрыть верхний и нижний колонтитулы».
В режиме редактирования верхний или нижний колонтитул можно изменить следующим образом:
Вставка текста, отверстий, номеров страниц и изображений
Форматирование добавляемых элементов, например, путем указания типа номера страницы
Изменение размера верхнего или нижнего колонтитула
Указание другого верхнего или нижнего колонтитула для первой страницы, нечетных страниц и четных страниц
Вставка полей Word
Механизм полей помогает создавать содержимое верхнего или нижнего колонтитула, которое зависит от страницы. Чтобы просмотреть поля, которые можно вставить, нажмите кнопку «Обзор быстрых деталей» и выберите «Поле». StyleRef полезно для вставки заголовков глав или разделов в нижний колонтитул. См. раздел Создание текущих колонтитулов страницы.
Дополнительные сведения о работе с колонтитулами страниц Word см. в разделе https://support.microsoft.com/en-us/word.
Колонтитулы страницы можно изменять непосредственно в основном шаблоне. Чтобы добавить колонтитул страницы в шаблон детали документа, измените колонтитул страницы. Выделите всю страницу с помощью клавиш CTRL + A перед сохранением детали в коллекции быстрых деталей. Дополнительные сведения о добавлении и изменении шаблонов деталей документа см. в разделе Создание библиотеки шаблонов деталей документов Microsoft Word.
Можно вставить номер страницы в верхний или нижний колонтитул. На вкладке «Дизайн колонтитулов» используйте меню «Номер страницы» для вставки номера страницы. Для доступа к параметрам форматирования в верхнем или нижнем колонтитуле щелкните правой кнопкой мыши номер страницы и выберите «Формат номеров страниц».
Добавление колонтитулов страниц в шаблон PDF включает следующие шаги:
Добавить <pheader> и <pfooter> элементов к макету страницы, который определяется с помощью <layout> элемент. Элементы верхнего и нижнего колонтитулов можно добавить в макет основного шаблона (root.html) или в шаблоне детали документа.
Определите шаблон детали документа для каждого стиля верхнего или нижнего колонтитула страницы.
Примечание
Если верхний или нижний колонтитул вставляется в макет только программно, добавление <pfooter> или <pheader> элемент к шаблону <layout> элемент.
В таблице показаны атрибуты, которые можно использовать с <pheader> и <pfooter>. Эти элементы соответствуют классам DOM mlreportgen.dom.PDFPageHeader и mlreportgen.dom.PDFPageFooter.
| Элемент | Признаки | Ценности |
|---|---|---|
pheader | type | default, first, even |
template-name | Шаблон детали документа, определяющий заголовок | |
pfooter | type | default, first, even |
template-name | Шаблон детали документа, определяющий нижний колонтитул |
Например, этот код определяет шаблон позиции документа. Chapter используется два нижних колонтитула: один для нечетных страниц и один для четных страниц. Формат номера страницы - арабские цифры.
<dptemplate name="Chapter"> <layout style="page-margin: 1in 1in 1in 1in 0.5in 0.5in 0in; page-size: 8.5in 11in portrait"> <pfooter type="default" template-name="MyPageFooter"/> <pfooter type="even" template-name="MyEvenFooter"/> <pnumber format="1" /> </layout> <!-- Define content for your chapter here--fixed text and holes as needed --> </dptemplate>
Определение шаблонов деталей документа MyPageFooter и MyEvenFooter в docpart_templates.html файл. Например, определите нижние колонтитулы страницы так, чтобы:
Все нижние колонтитулы вставляют номер страницы. Для вставки номера страницы используйте <page> элемент.
Нечетные номера страниц выравниваются справа. default значение для type на pfooter элемент определяет первую и нечетную страницы.
Четные номера страниц выравниваются влево.
Эти шаблоны деталей документа определяют нижние колонтитулы страниц.
<dptemplate name="MyPageFooter"> <p style="text-align:right;font-family:Arial,Helvetica,sans-serif;font-size:10pt"> <page/></p> </dptemplate> <dptemplate name="MyEvenFooter"> <p style="text-align:left;font-family:Arial,Helvetica,sans-serif;font-size:10pt"> <page/></p> </dptemplate>
Эти HTML-элементы DOM API полезны в колонтитулах. Например, можно добавить номера страниц в колонтитулы в форме Страница 1 из 3 с помощью <page> и <numpages>. Посмотрите mlreportgen.dom.NumPages для эквивалентного программного подхода. В верхнем или нижнем колонтитуле можно также создавать содержимое, изменяющееся на основе содержимого указанного элемента (стиля) на странице. См. раздел Создание текущих колонтитулов страницы.
| Цель | Элемент | Признаки | Ценности |
|---|---|---|---|
Формат номера страницы (такой же, как first-page-number и page-number-format на макете) | pnumber | format | n или N для числовых, a, A, i, I
|
initial-value | Номер первой страницы в макете, использующем этот элемент | ||
| Номер текущей страницы | page | Нет атрибутов | n/a |
| Общее количество страниц в документе | numpages | Нет атрибутов | n/a |
| Вставка содержимого заголовка или другого стиля в верхний или нижний колонтитул страницы (для запущенных верхних и нижних колонтитулов) | styleref | Нет атрибутов | Вставляет содержимое ближайшего h1 элемент. |
style-name или | Имя стиля с содержимым для вставки в верхний или нижний колонтитул или | ||
outline-level | Уровень структуры стиля с содержимым для вставки в верхний или нижний колонтитул |
Используйте CurrentPageLayout свойство Document или DocumentPart доступ к определяемым шаблоном колонтитулам для текущего раздела документа или детали документа.
Значение CurrentPageLayout свойство является DOCXPageLayout или PDFPageLayout объект, чей PageHeaders и PageFooters свойства содержат массив ячеек объектов, соответствующих определяемым шаблоном колонтитулам текущего раздела. Каждый массив ячеек может содержать до трех объектов в зависимости от того, сколько из трех типов колонтитулов (первая страница, четная страница, нечетная страница) определено для раздела. Объекты могут отображаться в массиве ячеек в любом порядке. Таким образом, чтобы получить доступ к колонтитулу определенного типа, выполните поиск в массиве ячеек, чтобы найти нужный массив.
Интерфейс DOM API можно использовать для добавления содержимого к определяемому шаблоном колонтитулу, который отображается на каждой странице раздела. Для добавления содержимого к колонтитулу в текущем разделе документа или части документа сначала используйте документ или часть документа. CurrentPageLayout свойство для доступа к DOCX или PDF PagerHeader или PageFooter объект. Затем используйте append способ PageHeader или PageFooter объект для добавления содержимого.
Объекты верхнего и нижнего колонтитулов - это тип объекта детали документа. В верхний или нижний колонтитул страницы можно добавлять любое содержимое, например абзацы, изображения и таблицы.
Отверстия в верхних и нижних колонтитулах основного шаблона можно использовать для управления расположением содержимого, добавляемого к верхним и нижним колонтитулам. Например, эта программа добавляет текущую дату в отверстие с именем Date в первом определяемом шаблоном заголовке страницы первого раздела отчета. В этом примере предполагается, что шаблон Word MyReportTemplate имеет один макет, определяющий первую страницу, нечетную страницу и даже верхний и нижний колонтитулы страницы.
import mlreportgen.dom.*;
d = Document('MyReport','docx','MyReportTemplate');
open(d);
sect = d.CurrentPageLayout;
for i = 1:numel(sect.PageHeaders)
if strcmpi(sect.PageHeaders(i).PageType,'first')
firstPageHeader = sect.PageHeaders(i);
while ~strcmp(firstPageHeader.CurrentHoleId,'#end#')
switch firstPageHeader.CurrentHoleId
case 'Date'
append(firstPageHeader,date);
end
moveToNextHole(firstPageHeader);
end
break;
end
end
close(d);
rptview(d.OutputPath);
Верхний или нижний колонтитул текущей страницы содержит содержимое, которое варьируется от страницы к странице в зависимости от контекста. Например, имя текущей главы или раздела изменяется со страницы на страницу. Текущее содержимое можно вставить в верхний или нижний колонтитул страницы.
Можно создать текущие колонтитулы страниц программным путем или в шаблоне.
В разделе «Колонтитулы страниц в шаблоне Word» описывается общий подход к редактированию колонтитулов страниц в Word. Чтобы добавить выполняющийся текст, вставьте StyleRef поле. Это поле эквивалентно DOM API mlreportgen.dom.StyleRef класс. Чтобы вставить это поле в шаблон Word или шаблон детали документа, выполните следующие действия.
Откройте верхний или нижний колонтитул для редактирования.
На вкладке «Вставка» в меню кнопки «Быстрые детали» выберите «Поле».
В диалоговом окне «Поле» в списке «Имена полей» выберите StyleRef. В списке Имя стиля (Style name) выберите имя стиля, содержащего текст, который требуется включить в текущий верхний или нижний колонтитул.
Например, выберите Heading 1 для использования содержимого абзацев, отформатированных стилем «Заголовок 1». Отчет должен создавать содержимое, использующее этот стиль для отображения содержимого в верхнем или нижнем колонтитуле.
Нажмите кнопку ОК.
Для PDF-документов, чтобы включить исполняемый текст, используйте <styleref> элемент. Добавить такой код в шаблон docpart_templates.html файл библиотеки. <styleref> элемент использует Heading1 для содержимого по умолчанию.
<dptemplate name="RunningFooter"> <p style="text-align:center;font-family:sans-serif;font-size:10pt"> <styleref/> </p> </dptemplate>
Чтобы увидеть эффект, добавьте нижний колонтитул страницы в <layout> элемент шаблона root.html файл. Вы можете вставить его в любой <layout> элемент, определяемый шаблоном.
<layout style="page-margin: 1in 1in 1in 1in 0.5in 0.5in 0in; page-size: 8.5in 11in portrait"> <pfooter template-name="RunningFooter" /> </layout>
Использовать код, который создает Heading1 и вызывает шаблон для просмотра результата. Этот код предполагает, что в шаблоне был определен шаблон детали нижнего колонтитула документа RunFooters.
import mlreportgen.dom.*; d = Document('mydoc','pdf','RunFooters'); open(d); title = append(d, Paragraph('Document Title')); title.Bold = true; title.FontSize = '28pt'; h1 = append(d,Heading1('My First Chapter')); p1 = append(d,Paragraph('Hello World')); h2 = append(d,Heading1('My Second Chapter')); h2.Style = {PageBreakBefore(true)}; p2 = append(d,Paragraph('Text for this chapter.')); close(d); rptview(d.OutputPath);
Для программной ссылки на нижний колонтитул страницы используйте код в этой форме. Первым аргументом является тип нижнего колонтитула, вторым - пакет шаблона, а третьим - шаблон детали документа.
PDFPageFooter('default','RunFooters','RunningFooter');
Этот код создает нижний колонтитул в текущем макете страницы без использования шаблона для вставки нижнего колонтитула. Шаблон используется только для определения шаблона детали документа.
import mlreportgen.dom.*; d = Document('mydoc','pdf','RunFooters'); open(d); myfooter = PDFPageFooter('default','RunFooters','RunningFooter'); d.CurrentPageLayout.PageFooters = myfooter; title = append(d,Paragraph('Document Title')); title.Bold = true; title.FontSize = '28pt'; h1 = append(d,Heading1('My First Chapter')); p1 = append(d,Paragraph('Hello World')); h2 = append(d,Heading1('My Second Chapter')); h2.Style = {PageBreakBefore(true)}; p2 = append(d,Paragraph('Text for this chapter.')); close(d); rptview(d.OutputPath);
DOM API предоставляет классы, которые помогают программно создавать работающие колонтитулы в документах Word и PDF.
Сведения о вставке заголовка главы в верхний или нижний колонтитул страницы см. в разделе mlreportgen.dom.StyleRef.
Сведения о работе с колонтитулами страниц см. в разделе mlreportgen.dom.DOCXPageHeader, mlreportgen.dom.DOCXPageFooter, mlreportgen.dom.PDFPageHeader, и mlreportgen.dom.PDFPageFooter.
Программно создайте колонтитул страницы в текущем разделе отчета. Можно использовать тот же метод для PDF, используя PDFPageHeader и PDFPageFooter вместо соответствующих деталей DOCX.
Используйте DOCXPageHeader или DOCXPageFooter для создания требуемого типа верхнего или нижнего колонтитула страницы (первая страница, нечетная страница, четная страница или нечетная и четная страница) на основе шаблона, определяющего форму шаблона (фиксированное содержимое и отверстия для переменного содержимого).
Заполните содержимое отверстий в верхнем или нижнем колонтитуле.
Вставка верхнего или нижнего колонтитула в массив верхних или нижних колонтитулов текущей страницы PageLayout объект.
Этот код создает заголовок первой страницы из шаблона, хранящегося в библиотеке шаблонов деталей документа отчета.
import mlreportgen.dom.*; d = Document('MyReport','docx','MyReportTemplate'); open(d); pageHeaders(1) = DOCXPageHeader('first',d,'FirstPageHeader'); while ~strcmp(pageHeaders(1).CurrentHoleId,'#end#') switch pageHeaders(1).CurrentHoleId case 'Date' append(pageHeaders(1),date); end moveToNextHole(pageHeaders(1)); end d.CurrentPageLayout.PageHeaders = pageHeaders; close(d); rptview(d.OutputPath);
Для вставки номера страницы используйте mlreportgen.dom.Page объект.
Чтобы вставить номер страницы в форму Страница [текущая страница] из [всего страниц], см. раздел mlreportgen.dom.NumPages.
Сведения о вставке комплексных номеров страниц в отчет Word в форме [Глава #] - [Текущая страница #] см. в разделе Добавление комплексных номеров страниц в Microsoft Word.
mlreportgen.dom.Document | mlreportgen.dom.DocumentPart | mlreportgen.dom.DOCXPageFooter | mlreportgen.dom.DOCXPageHeader | mlreportgen.dom.DOCXPageLayout | mlreportgen.dom.NumPages | mlreportgen.dom.Page | mlreportgen.dom.PDFPageFooter | mlreportgen.dom.PDFPageHeader | mlreportgen.dom.PDFPageLayout | mlreportgen.dom.StyleRef