Эти примеры показывают, как нумеровать страницы отчета программно с DOM и Report API. Этот рабочий процесс применяется только к выходным данным Word и PDF.
В этом примере каждая страница содержит нижний колонтитул с номером страницы арабскими цифрами. Вот первая страница:
Импортируйте пакет 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);
Этот пример демонстрирует различные способы настройки нумерации страниц в документе. 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 и 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);