主要内容

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

自定义章节页眉

此示例显示如何自定义由报告 API 章节报告器生成的章节页眉。您可以自定义 PDF 和 Microsoft® Word 报告的章节页眉。该示例为虚构公司 ABC Services 生成一份报告。自定义标题包含公司徽标、工程名称和报告日期。

公司徽标固定在页眉中。工程名称和报告日期是动态的。它们是在报告生成时创建的。

工作流程如下:

  1. 创建自定义章节报告器类。

  2. 修改 PDF 或 Word 章节模板中的页眉。

  3. 为自定义标题中的动态内容向自定义报告器类添加属性。

  4. 编写一个使用自定义报告器并指定属性值的报告程序。

创建自定义章节报告器类别

通过调用 mlreportgen.report.Chapter.customizeReporter 方法创建一个骨架章节报告器类。将类命名为 Chapter,并将其保存在命名空间文件夹内的类文件夹中。

mlreportgen.report.Chapter.customizeReporter('+abc/@Chapter');

此方法调用还将每种报告类型的章节模板复制到 +abc/@Chapter/resources/templates 文件夹。

修改 PDF 报告章节模板中的标题

要修改 PDF 报告章节模板中的标题定义:

  1. 解压模板文件。

  2. 使用文本编辑器编辑 docpart_templates.html 文件中的标题定义。

  3. 将解压的文件打包成模板文件。

解压模板文件

将当前文件夹更改为包含 PDF 模板文件 default.pdftx 的文件夹,然后解压缩该文件。

cd('+abc/@Chapter/resources/templates/pdf');
unzipTemplate('default.pdftx');

解压的文件位于名为 default 的文件夹中。

复制图像文件

将公司徽标的图像文件复制到 default/images 文件夹。使用本示例附带的图像文件 abc_logo.png,或者您自己的图像文件。

编辑标题定义

在 MATLAB® 编辑器或文本编辑器中,打开 docpart_templates.html(位于名为 default 的文件夹中)。

为了使所有页面上的页眉相同,请在 Section1 dptemplate 元素中,从页眉和页脚模板列表中删除 SectionFirstPageHeaderSectionEvenPageHeader

SectionDefaultPageHeader 现在是所有章节页眉的模板。找到 SectionDefaultPageHeader 模板。

<dptemplate name = "SectionDefaultPageHeader">
     <p class="SectionTitleHeader"><StyleRef style-name="SectionTitle1"/></p>
     <hr/>
</dptemplate>

用此标记替换它:

<dptemplate name = "SectionDefaultPageHeader">
    <table width="100%">
        <tr style="border-bottom: 1pt solid #ccc;">              
            <td style="text-align:left; padding-bottom:2pt" valign="bottom">
                <img src="images/abc_logo.png"></img></td>
            <td style="text-align:center; padding-bottom:2pt; font-family:arial;
                font-size: 10pt; font-weight: bold" valign="bottom">
                <hole id="Project">PROJECT</hole></td>
            <td style="text-align:right; padding-bottom:2pt; font-family:arial;
                font-size: 10pt" valign="bottom"><hole id="Date">DATE</hole></td>
         </tr>
     </table>
</dptemplate>

该标记定义了一个单行三列的表,具有以下特征:

  • 表单元格包含公司徽标、工程名称空位和报告日期空位。

  • 第一、第二、第三个单元格的内容分别左对齐、居中对齐、右对齐。

  • 单元格底部和单元格内容之间的填充为 2pt。

  • 单元格内容与单元格底部对齐。

  • 第二个单元格中文本的字体为 Arial、10pt、粗体。第三个单元格中文本的字体为 Arial 和 10pt。

  • 该行的底部边框可见。表没有边框,因为 HTML 没有指定 border 属性。

打包提取的文件

如果您在 MATLAB 编辑器中编辑了 docpart_templates.html,请在打包文件之前关闭该文件。

确保您位于 +abc/@Chapter/resources/templates/pdf 文件夹中,该文件夹包含名为 default 的文件夹。将 default 中的文件打包回原始 PDF 模板文件。

zipTemplate('default.pdftx','default');

修改 Word 报告章节模板中的标题

在 Word 中,Section1 模板用于章节和顶级节。该模板位于快速部件库中。

要修改 Section1 模板中的标题:

  1. 在 Word 中打开模板文件。

  2. 在模板文档的主体中创建 Section1 模板的临时副本。

  3. 指定所有页面是否具有相同的页眉。

  4. 编辑标题。

  5. 将修改后的 Section1 模板保存至快速部件库。

  6. 从模板文档正文中删除内容并保存模板文件。

打开模板文件

导航到 +abc/@Chapter/resources/templates/docx

使用以下方法之一打开模板文件:

  • 在 MATLAB 中,在当前文件夹窗格中,右键点击模板文件,然后点击在 MATLAB 外部打开

  • 在 MATLAB 之外,右键点击模板文件,然后点击打开

不要双击 Word 模板文件来打开它。双击该文件将打开使用该模板的 Word 文档文件。

模板文档打开后会显示一个空白页。

显示格式符号

要使段落和格式符号可见,请在主页选项卡上点击显示/隐藏按钮

将 Section1 模板复制到模板文档中

插入选项卡上的文本组中,点击快速部件,然后点击 Section1 构建模块。

在模板文档中,Word 插入 Section1 模板的副本和虚拟的 Section2 部分。生成报告时,虚拟部分将被忽略。

光标位于虚拟的 Section2 中。向上滚动到 Section1 模板。要打开标题,请双击它。

指定所有页面具有相同的页眉

页眉和页脚工具下的设计选项卡上,清除首页不同复选框。

第一页之后的页面的页眉将被复制到第一页的页眉。

向标题添加表

插入选项卡上,点击。将指针移到网格上,直到突出显示三列和一行。

删除消息 Error! No text of specified style in document 及其包含的段落。

原始页眉的水平规则是段落的底部边框。为了使其不可见,点击该段落,然后在开始选项卡上的段落组中,点击边框 右侧的箭头,然后点击无边框

将徽标添加到第一个表单元格

将公司徽标复制并粘贴到第一个表单元格中。使用附加的 abc_logo.png 文件或您自己的图像文件。

添加工程和日期的空位

如果开发人员功能区不可用,点击文件 > 选项,然后点击自定义功能区。在自定义功能区下,选择开发人员

开发人员选项卡上,点击设计模式,这样您就可以在创建空位时看到带有标题标记的空位标记。

在第二个单元格中,在入口标记前添加几个空格,以便您添加的空位是一个内联空位。

点击空格前面。

点击富文本内容控制按钮 。显示富文本内容控件。

删除您添加的空格。

将控件中的文本替换为标识空位的文本,例如 Project Name

开发人员选项卡上,点击属性

内容控制属性对话框中:

  • 标题字段中,输入 Project

  • 标记字段中,输入 Hole

选中使用样式设置键入空控件中的文本格式复选框。然后,点击新建样式

根据格式创建新样式对话框中,在名称字段中输入 Project。对于格式,请指定 Arial、10pt。点击粗体按钮。点击确定

内容控制属性对话框中,点击确定

在第三个单元格中为日期添加内联空位。使用之前用于在第二个单元格中添加空位的步骤。

  1. 在输入标记前添加几个空格。

  2. 点击空格前面。

  3. 点击富文本内容控制按钮

  4. 删除您添加的空格。

  5. 将控件中的文本替换为标识空位的文本,例如“报告日期”。

  6. 开发人员选项卡上,点击属性。在内容控制属性对话框中,在标题字段中输入 Date,在标记字段中输入 Hole

  7. 选中使用样式设置键入空控件中的文本格式复选框。然后,点击新建样式

  8. 根据格式创建新样式对话框中,在名称字段中输入 ReportDate。对于格式,请指定 Arial 和 10pt。

该表如下所示:

指定表单元格下边距

指定单元格底部边距:

  1. 选择并右键点击表。

  2. 点击表属性,然后在选项卡上,点击选项

  3. 表选项对话框中,在默认单元格边距下的底部字段中,输入 2pt。

对齐单元格内容

将徽标在第一个单元格中左对齐。将空位置于第三个单元格的中心。将第三个单元格中的空位右对齐。

要对齐单元格内容,请执行以下操作:

  1. 选择表中的图像或空位。

  2. 开始选项卡上的段落组中,点击左对齐居中右对齐按钮。

使表的顶部和侧面边框不可见

仅显示表的底部边框:

  1. 选择表。

  2. 表工具下的设计选项卡上,点击边框 > 无边框

  3. 点击边框 > 底部边框

  4. 线条粗细设置为 1pt。

保存自定义模板

双击页眉外部的页面来关闭页眉。

要选择模板中的所有内容,请按 Ctrl+A

插入选项卡上,点击快速部件,然后点击保存所选内容到快速部件库

创建新的构建块对话框的名称字段中,输入 Section1。将图库设置为 Quick Parts,将类别设置为 mlreportgen,并将保存在设置为默认。点击确定

当您看到消息 Do you want to redefine the building block entry? 时,点击

保存模板文件

最佳做法是在保存模板文件之前删除模板文档正文中的内容。

选择内容后,按删除

要隐藏格式符号,请在开始选项卡上的段落组中,点击显示/隐藏按钮

保存模板文件。

向自定义报告器类添加属性

由于自定义标头具有动态内容的空位,因此您必须为这些空位定义属性。

导航到 +abc/@Chapter 文件夹。

在类定义文件 Chapter.m 中,添加与标题中的 ProjectDate 空位相对应的属性。将空的 properties 部分替换为:

    properties 
        Project = ''
        Date = ''
    end     

保存类文件。

使用自定义章节报告器生成报告

当您生成报告时,从 abc.Chapter 类创建章节报告器。为与标题中的空位相对应的属性分配值。

在运行以下代码之前,请导航到包含 +abc 文件夹的文件夹。或者,将包含 +abc 文件夹的文件夹添加到 MATLAB 路径:

  1. 在 MATLAB 工具条中的主页选项卡上的环境组中,点击设置路径

  2. 设置路径对话框中,点击添加文件夹

  3. 将文件夹添加到路径对话框中,点击该文件夹,然后点击选择文件夹

您不能将命名空间添加到 MATLAB 路径。添加包含命名空间文件夹的文件夹。

生成 PDF 报告

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

report = Report("Consulting Report","pdf");
chapter = abc.Chapter();
chapter.Project = "Control Systems Consulting";
chapter.Date = date;
chapter.Title="Overview";
add(chapter,"Chapter content goes here.");
add(report,chapter);
close(report);
rptview(report);

生成 Word 报告

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

report = Report("Consulting Report","docx");
chapter = abc.Chapter();
chapter.Project = "Control Systems Consulting";
chapter.Date = date;
chapter.Title="Overview";
add(chapter,"Chapter content goes here.");
add(report,chapter);
close(report);
rptview(report);

另请参阅

| |

主题