Можно создавать верхние и нижние колонтитулы страниц в отчетах Word и PDF. Можно создать верхние и нижние колонтитулы страниц в каждом размещении для каждого из следующих типов страниц:
Первая страница раздела
Четные страницы
Нечетные страницы, которые включают первую страницу, если вы не задаете верхний или нижний колонтитул первой страницы
Можно создавать верхние и нижние колонтитулы страниц отчетов программно или в шаблоне, который будет использоваться вместе с отчетом. Можно добавить содержимое в нижние колонтитулы.
Когда вы открываете отчет, DOM API:
Считывает колонтитулы из шаблона и преобразует их в PDF или DOCX PageHeader и PageFooter объекты
Связывает объекты колонтитулов с DOCX или PDF PageLayout объект, который определяет свойства раздела, содержащего колонтитулы
Добавляет колонтитулы к отчету, когда код перемещается по разделам, определенным шаблоном
Когда программа отчетов перемещается по разделам, она может добавлять содержимое в верхние и нижние колонтитулы, заданные шаблоном.
Можно вставлять верхние и нижние колонтитулы страниц в основной шаблон или в шаблон детали документа. Подход отличается в Word и PDF.
Каждая страница документа Word имеет верхний и нижний колонтитулы, которые можно отредактировать. Чтобы включить режим редактирования, дважды щелкните верхний или нижний колонтитул. Кроме того, на вкладке Insert Word, в разделе Колонтитул и колонтитул, нажмите стрелу Header или Footer. В меню выберите соответствующую команду Edit. После завершения редактирования колонтитула на вкладке Header & Footer Tools Design нажмите Close Header and Footer.
В режиме редактирования можно изменить колонтитул или нижний колонтитул следующим образом:
Вставка текста, отверстий, номеров страниц и изображений
Форматирование добавляемых элементов, например, путем определения типа номера страницы
Изменение размера верхнего или нижнего колонтитула
Указание другого колонтитула для первой страницы, нечетных страниц и четных страниц
Вставка полей Word
Механизм полей помогает вам генерировать содержимое верхнего или нижнего колонтитула, которое варьируется от страницы к странице. Чтобы увидеть поля, которые можно вставить, нажмите кнопку Explore Quick Parts и выберите Field. The StyleRef поле полезно для вставки заголовков глав или разделов в нижний колонтитул. См. раздел «Создание колонтитулов и нижних колонтитулов выполняемых страниц».
Для получения дополнительной информации о работе с верхними и нижними колонтитулами страниц Word смотрите https://support.microsoft.com/en-us/word.
Можно изменять верхние и нижние колонтитулы страниц непосредственно в основном шаблоне. Чтобы добавить верхний или нижний колонтитул страницы в шаблон детали документа, измените верхний и нижний колонтитулы страницы по своему усмотрению. Выберите всю страницу с помощью CTRL+A перед сохранением детали в коллекции быстрых деталей. Дополнительные сведения о добавлении и изменении шаблонов деталей документа см. в разделе Создание библиотеки шаблонов деталей документов Microsoft Word.
Вы можете вставить номер страницы в верхний или нижний колонтитул. На вкладке Header & Footer Design используйте меню Page Number для вставки номера страницы. Чтобы получить доступ к опциям форматирования, в верхнем или нижнем колонтитуле щелкните правой кнопкой мыши номер страницы и выберите Format Page Numbers.
Добавление колонтитулов и колонтитулов страниц в шаблон 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> элемент.
Нечетные номера страниц выравниваются вправо. The 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 или шаблон детали документа:
Откройте колонтитул для редактирования.
На вкладке Insert в меню кнопки Quick Parts выберите Field.
В диалоговом окне Field из списка Field names выберите StyleRef. В списке Style name выберите имя стиля, содержащего текст, который необходимо включить в текущий верхний или нижний колонтитул.
Для примера выберите Heading 1 использовать содержимое абзацев, отформатированных в стиле Заголовок 1. В отчете необходимо создать содержимое, которое будет использовать этот стиль для отображения содержимого в верхнем или нижнем колонтитуле.
Нажмите OK.
Для PDF документов, включая текущий текст, используйте <styleref> элемент. Добавьте такой код к docpart_templates.html своего шаблона файл библиотеки. The <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