通过编程对页面进行编号
这些示例展示了如何使用 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
属性的 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);