Программно номерные страницы

Эти примеры показывают, как нумеровать страницы отчета программно с DOM и Report API. Этот рабочий процесс применяется только к выходным данным Word и PDF.

Простые номера страниц с использованием DOM API

В этом примере каждая страница содержит нижний колонтитул с номером страницы арабскими цифрами. Вот первая страница:

Импортируйте пакет DOM так, чтобы вам не пришлось использовать длинные, полные имена классов.

import mlreportgen.dom.*;

Создайте и откройте PDF. Чтобы создать документ Word, измените тип выхода с "pdf" на "docx".

d = Document("pageNumberExample","pdf");
open(d);

Создайте нижний колонтитул PDF и добавьте его к текущему макету страницы. Установите тип нижнего колонтитула равным "default" так, чтобы он появлялся на всех страницах документа. Если документ является документом Word, создайте DOCXPageFooter вместо PDFPageFooter.

footer = PDFPageFooter("default");
d.CurrentPageLayout.PageFooters = footer;

Задайте Paragraph объект, содержащий текст перед номером страницы. Отформатируйте абзац так, чтобы он центрировался по горизонтали на странице.

pagePara = Paragraph("Page");
pagePara.WhiteSpace = "preserve";
pagePara.HAlign = "center";

Создайте Page DOM объект, который является заполнителем для номера страницы. Этот заполнитель будет заменен текущим номером страницы при написании PDF или при открытии документа Word в Word. Этот Page объект может быть добавлен непосредственно в нижний или нижний колонтитул, но этот пример включает в себя дополнительный текст и форматирование с номером страницы.

pageNum = Page();

Добавьте номер страницы к абзацу и добавьте абзац в нижний колонтитул.

append(pagePara,pageNum);
append(footer,pagePara);

Демонстрация нумерации страниц путем добавления абзацев и пропусков страниц в документ для создания нескольких страниц.

page1Para = Paragraph("Hello World");
append(d,page1Para);

append(d, PageBreak());
page2Para = Paragraph("Another page");
append(d,page2Para);

append(d, PageBreak());
page3Para = Paragraph("Another page");
append(d,page3Para);

Закройте и просмотрите документ.

close(d);
rptview(d);

Настроенные номера страниц с использованием DOM API

Этот пример демонстрирует различные способы настройки нумерации страниц в документе. A DOM- PageNumber объект устанавливает нумерацию страницы, начинающуюся с 4, и числовой формат - верхние римские цифры. Другой параметр в объекте заголовка страницы приводит только к тому, что даже страницы имеют заголовок. Вот верхние части каждой страницы в документе:

Импортируйте пакет DOM так, чтобы вам не пришлось использовать длинные, полные имена классов.

import mlreportgen.dom.*;

Создайте и откройте документ Word. Чтобы создать PDF, измените вид выхода из docx на pdf.

d = Document("customPageNumberExample","docx");
open(d);

Создайте PageNumber объект, чтобы указать, что номера страниц начинаются с 4, и использовать заглавные римские цифры. Добавьте объект к текущему макету страницы документа.

romanPageNumber = PageNumber(4,"I");

layout = d.CurrentPageLayout;
layout.Style = [layout.Style {romanPageNumber}];

Создайте заголовок и добавьте его к текущему макету страницы. Установите тип заголовка равным even так, чтобы он был включен только на четные страницы документа. Если документ является PDF, создайте PDFPageHeader вместо DOCXPageHeader.

evenPageHeader = DOCXPageHeader("even");
layout.PageHeaders = evenPageHeader;

Создайте абзац, содержащий заполнитель номера страницы. Установите HAlign абзаца свойство так, чтобы номер страницы был центрирован в заголовке. Добавить абзац в заголовок.

headerPara = Paragraph();
headerPara.HAlign = "center";
append(headerPara,Page());

append(evenPageHeader,headerPara);

Демонстрация нумерации страниц путем добавления абзацев и пропусков страниц в документ для создания нескольких страниц.

page4Para = Paragraph("This is page four.");
append(d,page4Para);

append(d, PageBreak());
page5Para = Paragraph("This page does not have a page number.");
append(d,page5Para);

append(d, PageBreak());
page6Para = Paragraph("This is another page.");
append(d,page6Para);

Закройте и просмотрите документ.

close(d);
rptview(d);

Номера страниц с использованием Report API

Номера страниц автоматически включаются в отчеты, созданные с помощью Report API. Можно задать начальный номер и формат номера для всего отчета или для отдельных глав. В этом примере форматом номера по умолчанию для отчета являются арабские цифры, но последняя глава переопределяет эту настройку, чтобы использовать верхние буквенные символы. Таблица содержимого демонстрирует настройку нумерации страниц:

Импортируйте пакеты Report и DOM так, чтобы не использовать длинные, полные имена классов.

import mlreportgen.report.*
import mlreportgen.dom.*

Создание отчета PDF. Чтобы создать отчет Word, измените тип выхода с pdf на docx. Вы можете задать номер первой страницы и формат номера для всего отчета путем изменения PageNumberFormat и FirstPageNumber свойства Layout объекта отчета свойство, как показано в закомментированных строках кода. Поскольку нумерация страниц по умолчанию является арабскими числами, начинающимися с 1, вы не должны устанавливать свойства для этого примера.

rpt = Report("newReport", "pdf"); 
% rpt.Layout.PageNumberFormat = "n";
% rpt.Layout.FirstPageNumber = 1;

Создайте заголовок страницу и таблицу содержимого. Добавьте их в отчет. Страница заголовка не имеет номера страницы. Таблица содержимого нумеруется по умолчанию строчными римскими числами, начинающимися с i. Чтобы изменить таблицу нумерации содержимого, используйте Layout свойство объекта, как показано в коде с комментариями для Report объект.

tp = TitlePage();
tp.Title = "New Report"; 
tp.Author = "MathWorks"; 
add(rpt,tp);

toc = TableOfContents();

add(rpt, toc);

Создайте две главы с использованием номера страницы по умолчанию и формата отчета. Добавьте их в отчет.

ch = Chapter("Introduction");
sec = Section("First Section of Chapter 1");
add(sec, "This is the first section of chapter 1.");
add(ch,sec);
add(rpt,ch); 

ch = Chapter("Next chapter"); 
sec = Section("First Section of Chapter 2"); 
add(sec,"This is the first section of chapter 2.");
add(ch,sec);
add(rpt,ch)

Составьте окончательную главу для отчета. Установите номер начальной страницы назад равным 1, а формат номера - буквенные символы в верхнем регистре.

ch = Chapter("Last Chapter");
ch.Layout.FirstPageNumber = 1;
ch.Layout.PageNumberFormat = "A";

Создайте два раздела, разделенных разрывом страницы, и добавьте их в отчет, чтобы продемонстрировать нумерацию страницы последней главы.

sec = Section("First Section of the last chapter"); 
add(sec,"This is the first section of the last chapter.");
add(ch,sec);

add(ch, PageBreak());

sec = Section("Second Section of the last chapter"); 
add(sec,"This is the second section of the last chapter.");
add(ch,sec);

add(rpt, ch);

Закройте и просмотрите отчет.

close(rpt);
rptview(rpt);