通过编程自定义报告的页面大小和边距
此示例显示如何使用编程方法自定义 PDF 或 Microsoft® Word 报告中的页面大小和页边距、页眉、页脚和装订线。或者,您可以使用基于模板的方法。有关使用基于模板的方法的示例,请参阅 使用模板自定义 Word 报告的页面大小和边距 和 使用模板自定义 PDF 报告的页面大小和边距。如果您计划对模板进行其他修改,请使用基于模板的方法。否则,请使用程序化方法。
默认情况下,报告 API 生成的页面高度为 11 英寸,宽度为 8.5 英寸,边距为 1 英寸。页眉和页脚各宽 0.5 英寸,并且装订线为 0 像素。您可能需要在报告中更改这些尺寸。例如,如果您正在为欧洲区域生成报告,则可能需要生成 A4 页面,其高度为 11.69 英寸,宽度为 8.27 英寸,边距为 0.98 英寸。
要以编程方式自定义报告 API 报告的页面尺寸,请将自定义 mlreportgen.dom.PageSize
和 mlreportgen.dom.PageMargins
对象分配给整个报告或报告部分使用的布局对象。整个报告的布局对象是 mlreportgen.report.ReportLayout
对象,它被分配给 Layout
对象的 mlreportgen.report.Report
属性。报告部分的布局是一个 mlreportgen.report.ReporterLayout
对象,它被分配给代表该部分的报告器对象的 Layout
属性。这些报告器类的对象有一个 Layout
属性,您可以使用它来自定义该部分的页面尺寸:
mlreportgen.report.TitlePage
mlreportgen.report.TableOfContents
mlreportgen.report.ListOfFigures
mlreportgen.report.ListOfTables
mlreportgen.report.ListOfCaptions
mlreportgen.report.Chapter
如果您自定义整个报告的页面尺寸,然后覆盖报告某个部分的尺寸,请指定为该部分创建的 PageSize
或 PageMargins
对象的所有属性。否则,您未指定的属性具有默认值,该默认值可能与您为整个报告指定的值不同。
在此示例中,您将创建一份具有 A4 页面尺寸的报告,然后覆盖标题页的这些尺寸。
创建报告容器
导入 DOM 和报告 API 包,这样您就不必使用长而完全限定的类名。
import mlreportgen.dom.*; import mlreportgen.report.*;
为 Word 报告创建报告容器。对于 PDF 报告,将 "docx"
替换为 "pdf"
。
rpt = mlreportgen.report.Report("myreport","docx");
指定整个报告的自定义页面尺寸
创建一个 PageSize
对象,指定 11.69 英寸的页面高度、8.27 英寸的页面宽度和纵向方向。将 PageSize
对象分配给报告布局对象。
pageSizeObj = PageSize("11.69in","8.27in","portrait"); rpt.Layout.PageSize = pageSizeObj;
创建一个指定以下内容的 PageMargins
对象:
上、下、左、右边距为 0.98 英寸
页眉和页脚高度为 0.5 英寸
装订线大小为 0 英寸
pageMarginsObj = PageMargins(); pageMarginsObj.Top = "0.98in"; pageMarginsObj.Bottom = "0.98in"; pageMarginsObj.Left = "0.98in"; pageMarginsObj.Right = "0.98in"; pageMArginsObj.Header = "0.5in"; pageMarginsObj.Footer = "0.5in"; pageMarginsObj.Gutter = "0in";
将 PageMargins
对象分配给报告布局对象。
rpt.Layout.PageMargins = pageMarginsObj;
覆盖标题页部分的页面尺寸
创建标题页并指定 2 英寸边距,而不是为整个报告指定的 0.98 英寸边距。指定 0.5 英寸的页眉和页脚以及 0 英寸的装订线。
title = TitlePage("Title","Magic Squares"); title.Subtitle = "Columns, Rows, Diagonals: All Equal Sums"; title.Author = "Albrecht Durer"; pageMarginsObj = PageMargins(); pageMarginsObj.Top = "2in"; pageMarginsObj.Bottom = "2in"; pageMarginsObj.Left = "2in"; pageMarginsObj.Right = "2in"; pageMArginsObj.Header = "0.5in"; pageMarginsObj.Footer = "0.5in"; pageMarginsObj.Gutter = "0in";
将 PageMargins
对象分配给 TitlePage
布局对象。
title.Layout.PageMargins = pageMarginsObj; append(rpt,title);
由于您没有将 PageSize
对象分配给 TitlePage
对象布局,因此页面大小将是整个报告指定的大小。
使用为整个报告指定的页面尺寸创建报告的其余部分
创建目录部分。不要指定自定义页面大小或自定义边距。页面尺寸将是为整个报告指定的尺寸。
toc = TableOfContents; append(rpt,toc);
创建使用默认页面尺寸的章节。
chapter = Chapter("Introduction"); sec1 = Section("What is a Magic Square?"); para = Paragraph(['A magic square is an N-by-N matrix '... 'constructed from the integers 1 through N^2 '... 'with equal row, column, and diagonal sums.']); append(sec1,para); append(chapter,sec1); sec2 = Section("Albrect Durer and the Magic Square"); para = Paragraph([ ... 'The German artist Albrecht Durer (1471-1528) created '... 'many woodcuts and prints with religious and '... 'scientific symbolism. One of his most famous works, '... 'Melancholia I, explores the depressed state of mind '... 'which opposes inspiration and expression. '... 'Renaissance astrologers believed that the Jupiter '... 'magic square (shown in the upper right portion of '... 'the image) could aid in the cure of melancholy. The '... 'engraving''s date (1514) can be found in the '... 'lower row of numbers in the square.']); append(sec2,para); append(chapter,sec2); append(rpt,chapter);
关闭并查看报告
close(rpt); rptview(rpt);
另请参阅
mlreportgen.report.ReportLayout
| mlreportgen.report.ReporterLayout
| mlreportgen.report.Report
| mlreportgen.report.Reporter
| mlreportgen.dom.PageSize
| mlreportgen.dom.PageMargins