exponenta event banner

Создание нижних и верхних колонтитулов страниц

В отчетах Word и PDF можно создавать колонтитулы страниц. Можно создать колонтитулы страниц в каждом макете для каждого из следующих типов страниц:

  • Первая страница раздела

  • Четные страницы

  • нечетные страницы, которые включают первую страницу, если не указан верхний или нижний колонтитул первой страницы;

Можно создавать верхние и нижние колонтитулы страниц отчета программно или в шаблоне для использования с отчетом. Можно добавить содержимое в нижние колонтитулы.

При открытии отчета интерфейс DOM API:

  1. Считывает верхние и нижние колонтитулы из шаблона и преобразует их в PDF или DOCX PageHeader и PageFooter объекты

  2. Связывает верхние и нижние колонтитулы с DOCX или PDF PageLayout объект, определяющий свойства раздела, содержащего колонтитулы

  3. Добавляет верхние и нижние колонтитулы к отчету по мере перехода кода к разделам, определенным шаблоном

Когда программа отчетов перемещает разделы, она может добавлять содержимое в определенные шаблоном колонтитулы.

Использование колонтитулов страниц в шаблоне

Можно вставить верхние и нижние колонтитулы страниц в основной шаблон или в шаблон детали документа. Подход отличается для Word и для PDF.

Колонтитулы страниц в шаблоне Word

Каждая страница документа Word имеет колонтитулы, которые можно редактировать. Чтобы включить режим редактирования, дважды щелкните область колонтитулов. Либо на вкладке Вставка слова в разделе Колонтитулы щелкните стрелку кнопки Колонтитулы. В меню выберите соответствующую команду «Редактировать». По завершении редактирования верхнего или нижнего колонтитула на вкладке «Инструменты для верхнего и нижнего колонтитулов» «Дизайн» выберите «Закрыть верхний и нижний колонтитулы».

В режиме редактирования верхний или нижний колонтитул можно изменить следующим образом:

  • Вставка текста, отверстий, номеров страниц и изображений

  • Форматирование добавляемых элементов, например, путем указания типа номера страницы

  • Изменение размера верхнего или нижнего колонтитула

  • Указание другого верхнего или нижнего колонтитула для первой страницы, нечетных страниц и четных страниц

  • Вставка полей Word

    Механизм полей помогает создавать содержимое верхнего или нижнего колонтитула, которое зависит от страницы. Чтобы просмотреть поля, которые можно вставить, нажмите кнопку «Обзор быстрых деталей» и выберите «Поле». StyleRef полезно для вставки заголовков глав или разделов в нижний колонтитул. См. раздел Создание текущих колонтитулов страницы.

Дополнительные сведения о работе с колонтитулами страниц Word см. в разделе https://support.microsoft.com/en-us/word.

Колонтитулы страницы можно изменять непосредственно в основном шаблоне. Чтобы добавить колонтитул страницы в шаблон детали документа, измените колонтитул страницы. Выделите всю страницу с помощью клавиш CTRL + A перед сохранением детали в коллекции быстрых деталей. Дополнительные сведения о добавлении и изменении шаблонов деталей документа см. в разделе Создание библиотеки шаблонов деталей документов Microsoft Word.

Можно вставить номер страницы в верхний или нижний колонтитул. На вкладке «Дизайн колонтитулов» используйте меню «Номер страницы» для вставки номера страницы. Для доступа к параметрам форматирования в верхнем или нижнем колонтитуле щелкните правой кнопкой мыши номер страницы и выберите «Формат номеров страниц».

Верхние и нижние колонтитулы страниц в шаблоне PDF

Добавление колонтитулов страниц в шаблон PDF включает следующие шаги:

  • Добавить <pheader> и <pfooter> элементов к макету страницы, который определяется с помощью <layout> элемент. Элементы верхнего и нижнего колонтитулов можно добавить в макет основного шаблона (root.html) или в шаблоне детали документа.

  • Определите шаблон детали документа для каждого стиля верхнего или нижнего колонтитула страницы.

Примечание

Если верхний или нижний колонтитул вставляется в макет только программно, добавление <pfooter> или <pheader> элемент к шаблону <layout> элемент.

В таблице показаны атрибуты, которые можно использовать с <pheader> и <pfooter>. Эти элементы соответствуют классам DOM mlreportgen.dom.PDFPageHeader и mlreportgen.dom.PDFPageFooter.

ЭлементПризнакиЦенности
pheadertypedefault, first, even
template-nameШаблон детали документа, определяющий заголовок
pfootertypedefault, 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 на макете)pnumberformatn или 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 или шаблон детали документа, выполните следующие действия.

  1. Откройте верхний или нижний колонтитул для редактирования.

  2. На вкладке «Вставка» в меню кнопки «Быстрые детали» выберите «Поле».

  3. В диалоговом окне «Поле» в списке «Имена полей» выберите StyleRef. В списке Имя стиля (Style name) выберите имя стиля, содержащего текст, который требуется включить в текущий верхний или нижний колонтитул.

    Например, выберите Heading 1 для использования содержимого абзацев, отформатированных стилем «Заголовок 1». Отчет должен создавать содержимое, использующее этот стиль для отображения содержимого в верхнем или нижнем колонтитуле.

  4. Нажмите кнопку ОК.

Для 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.

Программно создать колонтитулы страницы

Программно создайте колонтитул страницы в текущем разделе отчета. Можно использовать тот же метод для PDF, используя PDFPageHeader и PDFPageFooter вместо соответствующих деталей DOCX.

  1. Используйте DOCXPageHeader или DOCXPageFooter для создания требуемого типа верхнего или нижнего колонтитула страницы (первая страница, нечетная страница, четная страница или нечетная и четная страница) на основе шаблона, определяющего форму шаблона (фиксированное содержимое и отверстия для переменного содержимого).

  2. Заполните содержимое отверстий в верхнем или нижнем колонтитуле.

  3. Вставка верхнего или нижнего колонтитула в массив верхних или нижних колонтитулов текущей страницы 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);

См. также

Функции

Классы

Связанные темы