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

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

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

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

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

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

Когда вы открываете отчет, DOM API:

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

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

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

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

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

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

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

Каждая страница документа 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

Добавление колонтитулов и колонтитулов страниц в шаблон 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> элемент.

  • Нечетные номера страниц выравниваются вправо. 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 на размещении)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. На вкладке Insert в меню кнопки Quick Parts выберите Field.

  3. В диалоговом окне Field из списка Field names выберите StyleRef. В списке Style name выберите имя стиля, содержащего текст, который необходимо включить в текущий верхний или нижний колонтитул.

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

  4. Нажмите 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.

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

Программно создайте верхний или нижний колонтитул страницы в текущем разделе отчета. Можно использовать тот же метод для 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);

См. также

Функции

Классы

Похожие темы