主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

通过编程对页面进行编号

这些示例展示了如何使用 DOM 和报告 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";

创建一个 DOM Page 对象,作为页码的占位符。当编写 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 自定义页码

此示例演示了自定义文档页码的不同方法。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);

使用报告 API 的页码

使用报告 API 生成的报告中会自动包含页码。您可以为整个报告或各个章节设置起始编号和编号格式。在此示例中,报告的默认数字格式是阿拉伯数字,但上一章覆盖了此设置以使用大写字母。目录演示了页码设置:

导入报告和 DOM 命名空间,这样您就不必使用长而完全限定的类名。

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

创建 PDF 报告。要创建 Word 报告,请将输出类型从 pdf 更改为 docx。您可以通过修改报告对象的 PageNumberFormat 属性的 FirstPageNumberLayout 属性来设置整个报告的第一页码和数字格式,如注释掉的代码行所示。因为默认页码是从 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);