主要内容

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

根据图窗大小调整报告页面方向

此示例说明如何根据追加的图窗的大小来调整报告的页面布局。根据图窗大小的不同,某些图窗在横向或纵向页面方向下可能更易于阅读。在此示例中,您将创建三个不同大小的图窗,并根据大小调整页面方向。

设置报告器环境

导入 domutilisreport 包的命名空间。导入这些命名空间可以缩短您在代码中需要使用的报告器构造函数名称。

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

创建一个报告文档来包含图窗。添加标题页和目录。

rpt = Report("myReport","pdf");
append(rpt,TitlePage("Title","My Dynamic Plot Report"));
append(rpt,TableOfContents);

生成图窗

关闭所有现有图窗,然后在三个不同的图窗窗口中创建三个绘图。使用 gcf 函数捕获 MATLAB® 图窗窗口的句柄。

close all

figure
peaks(20);
myFigure(1) = gcf;
myFigure(1).Name = "Peaks";
myFigure(1).Position = [1 1 800 900];

figure
sphere(20);
myFigure(2) = gcf;
myFigure(2).Name = "Sphere";
myFigure(2).Position = [1 1 800 800];

figure
L = 160*membrane(1,100);
s = surface(L);
s.EdgeColor = "none";
view(3)
myFigure(3) = gcf;
myFigure(3).Name = "Membrane";
myFigure(3).Position = [1 1 1290 800];

将图窗追加到报告中并调整页面布局

要将图窗追加到报告中并根据图窗大小调整页面布局,请执行以下操作:

  1. 创建一个 Figure 报告器。

  2. 从图窗的快照创建一个 Image 报告器。Image 报告器在 WidthHeight 属性中包含快照的宽度和高度信息。

  3. 定义一个 PDFPageLayout 对象,并根据 Image 报告器的 WidthHeight 属性来调整 PageSize.Orientation 属性。

  4. PDFPageLayout 对象追加到报告中。

  5. Figure 报告器追加到报告中。

对于此示例,使用以下代码为三个图窗创建 FigureImage 对象。当图窗的宽度大于高度时,代码将页面方向设置为 "landscape"。否则,将方向设置为 "portrait"

for n = 1:length(myFigure)
    fig(n) = Figure(myFigure(n));
    img(n) = Image(getSnapshotImage(fig(n),rpt));
    width = units.toPixels(img(n).Width);
    height = units.toPixels(img(n).Height);
    plo = PDFPageLayout;
    if width > height
        plo.PageSize.Orientation = "landscape";
        width = plo.PageSize.Width;
        plo.PageSize.Width = plo.PageSize.Height;
        plo.PageSize.Height = width;
    else
        plo.PageSize.Orientation = "portrait";
    end
        head = Heading2(myFigure(n).Name);
    append(rpt,plo);
    head.Style = [head.Style,{PageBreakBefore,Bold,FontSize("18pt")}];
    append(rpt,head);
    append(rpt,fig(n));
end

查看报告

打开报告以查看图像。前两个图像在纵向页面上,最后一个图像在横向页面上。

close(rpt);
rptview(rpt);

此图显示了报告的最后两页。

The last two pages of the report. The first page at the top is in portrait orientation, and the last page towards the bottom is in landscape orientation.

另请参阅

主题