创建页脚和页眉
您可以在 Word 和 PDF 报告中创建页眉和页脚。您可以在每个布局中为以下每种类型的页面创建页眉和页脚:
节的第一页
偶数页
奇数页,如果您未指定首页页眉或页脚,则包括首页
您可以通过编程方式创建报告页眉和页脚,或者在模板中创建报告页眉和页脚,以便与报告一起使用。您可以将内容追加到页脚。
当您打开报告时,DOM API:
从模板中读取页眉和页脚并将其转换为 PDF 或 DOCX
PageHeader
和PageFooter
对象将页眉和页脚对象与 DOCX 或 PDF
PageLayout
对象关联,该对象定义包含页眉和页脚的部分的属性当您的代码导航模板定义的部分时,将页眉和页脚添加到您的报告中
当您的报告程序浏览各个部分时,它可以将内容追加到模板定义的页眉和页脚。
在模板中使用页眉和页脚
您可以在主模板或文档部件模板中插入页眉和页脚。对于 Word 和 PDF,方法有所不同。
Word 模板中的页眉和页脚
Word 文档中的每一页都有可以编辑的页眉和页脚。要启用编辑模式,请双击页眉或页脚区域。或者,在 Word 插入选项卡的页眉和页脚部分中,点击页眉或 页脚按钮箭头。从菜单中选择相应的编辑命令。完成页眉或页脚编辑后,在页眉和页脚工具设计选项卡上,点击关闭页眉页脚 。
在编辑模式下,您可以通过以下方式修改页眉或页脚:
插入文本、空位、页码和图像
格式化您添加的项目,例如,通过指定页码类型
调整页眉或页脚的大小
为首页、奇数页和偶数页指定不同的页眉或页脚
插入 Word 字段
字段机制可帮助您生成各个页面不同的页眉或页脚内容。要查看可以插入的字段,点击探索快速部件按钮并选择字段 。
StyleRef
字段对于在页脚插入章节或节标题很有用。请参阅创建连续页眉和页脚。
有关使用 Word 页眉和页脚的详细信息,请参阅 https://support.microsoft.com/word 。
您可以直接在主模板中修改页眉和页脚。要在文档部件模板中添加页眉或页脚,请根据需要修改页眉和页脚。使用 CTRL+A 选择整个页面,然后将该部分保存到快速部件库。有关添加和修改文档部件模板的详细信息,请参阅 创建 Microsoft Word 文 档部件模板库 。
您可以在页眉或页脚中插入页码。在页眉页脚设计选 项卡上,使用页码菜单插入页码。要访问格式选项,请在页眉或页脚中右键点击页码并选择格式化页码 。
PDF 模板中的页眉和页脚
在 PDF 模板中添加页眉和页脚涉及以下步骤:
将
<pheader>
和<pfooter>
元素添加到使用<layout>
元素定义的页面布局中。您可以将页眉和页脚元素添加到主模板(root.html
)或文档部件模板中的布局中。为每个页眉或页脚样式定义一个文档部件模板。
注意
如果仅以编程方式将页眉或页脚插入布局,则无需将 <pfooter>
或 <pheader>
元素添加到模板 <layout>
元素。
下表显示了可与 <pheader>
和 <pfooter>
一起使用的属性。这些元素与 DOM 类 mlreportgen.dom.PDFPageHeader
和 mlreportgen.dom.PDFPageFooter
相对应。
元素 | 属性 | 值 |
---|---|---|
pheader | type | default , first , even |
template-name | 定义标题的文档部件模板 | |
pfooter | type | default , 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>
在 docpart_templates.html
文件中定义文档部件模板 MyPageFooter
和 MyEvenFooter
。例如,定义页脚以便:
所有页脚都插入页码。要插入页码,请使用
<page>
元素。奇数页码右对齐。
pfooter
元素上type
的default
值指定第一页和奇数页。偶数页码左对齐。
这些文档部件模板定义了页脚。
<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>
这些 DOM API HTML 元素在页眉和页脚中很有用。例如,您可以使用 <page>
和 <numpages>
以第 1 页(共 3 页)的形式将页码添加到页眉和页脚。请参阅 mlreportgen.dom.NumPages
以了解等效的程序化方法。您还可以在页眉或页脚中生成根据页面上指定元素(样式)的内容而变化的内容。请参阅创建连续页眉和页脚。
用途 | 元素 | 属性 | 值 |
---|---|---|---|
页码格式(与布局上的 first-page-number 和 page-number-format 相同) | pnumber | format | n 或 N 表示数字,a 、A 、i 、I |
initial-value | 布局中使用此元素的第一页的编号 | ||
当前页码 | page | 无属性 | 不适用 |
文档总页数 | numpages | 无属性 | 不适用 |
将标题或其他样式的内容插入页眉或页脚(用于运行页眉和页脚) | styleref | 无属性 | 插入最近的 h1 元素的内容。 |
style-name 或 | 要插入到页眉或页脚中的样式的名称,或 | ||
outline-level | 大纲级别的样式,其中包含要在页眉或页脚中插入的内容 |
访问模板定义的页眉和页脚
使用 Document
或 DocumentPart
对象的 CurrentPageLayout
属性来访问文档或文档部件的当前节的模板定义的页眉和页脚。
CurrentPageLayout
属性的值是 DOCXPageLayout
或 PDFPageLayout
对象,其 PageHeaders
和 PageFooters
属性包含与当前节的模板定义的页眉和页脚相对应的对象元胞数组。每个元胞数组最多可以包含三个对象,具体取决于您为该节定义的三种页眉和页脚类型(第一页、偶数页、奇数页)的数量。对象可以以任意顺序出现在元胞数组中。因此,要访问特定类型的页眉或页脚,请搜索元胞数组以找到要访问的页眉或页脚。
将内容追加到模板定义的页眉和页脚
您可以使用 DOM API 将内容追加到出现在某一部分的每个页面上的模板定义的页眉或页脚。要将内容追加到文档或文档部件的当前节中的页眉或页脚,首先使用文档或文档部件 CurrentPageLayout
属性来访问 DOCX 或 PDF PagerHeader
或 PageFooter
对象。然后使用 PageHeader
或 PageFooter
对象的 append
方法来追加内容。
页眉和页脚对象是文档部件对象的一种。您可以将任何类型的内容追加到页眉或页脚,并将其追加到文档部件,例如段落、图像和表格。
您可以在主模板的页眉和页脚中使用空位来控制追加到页眉和页脚的内容的位置。例如,该程序将今天的日期追加到报告第一部分的第一个模板定义的页眉上名为 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 模板或文档部件模板中插入此字段:
打开页眉或页脚进行编辑。
在插入选项卡上,从快速部件按钮菜单中选择字段 。
在字段对话框中,从字段名称列表中选择 StyleRef 。从样式名称列表中,选择包含要包含在页眉或页脚中的文本的样式的名称。
例如,选择标题 1 以使用以标题 1 样式格式化的段落内容。您的报告必须创建使用该样式的内容才能使内容出现在页眉或页脚中。
点击确定。
对于 PDF 文档,要包含运行文本,请使用 <styleref>
元素。将这样的代码添加到模板的 docpart_templates.html
库文件中。<styleref>
元素默认使用 Heading1
对象作为内容。
<dptemplate name="RunningFooter"> <p style="text-align:center;font-family:sans-serif;font-size:10pt"> <styleref/> </p> </dptemplate>
要查看效果,请在模板的 root.html
文件的 <layout>
元素中添加页脚。您可以将其插入模板定义的任何 <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 文档中以编程方式创建运行页眉和页脚。
要在页眉或页脚中插入章节标题,请参阅
mlreportgen.dom.StyleRef
。要使用页眉和页脚,请参阅
mlreportgen.dom.DOCXPageHeader
、mlreportgen.dom.DOCXPageFooter
、mlreportgen.dom.PDFPageHeader
和mlreportgen.dom.PDFPageFooter
。
以编程方式创建页眉和页脚
以编程方式在报告的当前部分创建页眉或页脚。您可以对 PDF 使用相同的技术,使用 PDFPageHeader
和 PDFPageFooter
代替相应的 DOCX 部分。
使用
DOCXPageHeader
或DOCXPageFooter
构造函数根据定义模板形式(固定内容和可变内容的空位)的模板创建所需类型的页眉或页脚(首页、奇数页、偶数页或奇偶页)。用内容填充页眉或页脚中的空位。
将页眉或页脚插入当前
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);
要插入页码,请使用
mlreportgen.dom.Page
对象。要以“第 [当前页] 页,共 [总页] 页”的形式插入页码,请参阅
mlreportgen.dom.NumPages
。要在 Word 报告中插入复杂的页码,格式为 [章节号]-[当前页码],请参阅 在 Microsoft Word 中添加复杂页码 。
另请参阅
函数
类
mlreportgen.dom.DOCXPageHeader
|mlreportgen.dom.DOCXPageFooter
|mlreportgen.dom.DOCXPageLayout
|mlreportgen.dom.PDFPageHeader
|mlreportgen.dom.PDFPageFooter
|mlreportgen.dom.PDFPageLayout
|mlreportgen.dom.DocumentPart
|mlreportgen.dom.Document
|mlreportgen.dom.Page
|mlreportgen.dom.NumPages
|mlreportgen.dom.StyleRef