В этом примере показано, как использовать программный подход для настройки размера страницы и полей страницы, верхнего колонтитула, нижнего колонтитула и желоба в отчете PDF или Microsoft Word. Кроме того, можно использовать подход на основе шаблонов. Для примеров, которые используют подход на основе шаблонов, смотрите Настройка размера страницы и полей отчета Word с использованием шаблонов и Настройка размера страницы и полей отчета PDF с использованием шаблонов. Используйте подход на основе шаблонов, если планируется внести другие изменения в шаблоны. В противном случае используйте программный подход.
По умолчанию Report API генерирует страницы с 11-дюймовой высотой, шириной 8,5 дюйма и 1-дюймовыми полями. Колонтитулы и нижние колонтитулы имеют ширину 0,5 дюйма, а водосточный желоб составляет 0 пикселей. Возможно, потребуется изменить эти размерности в отчете. Например, если вы генерируете отчет для европейской локали, вам может потребоваться сгенерировать A4 страницы, которые имеют высоту 11,69 дюйма, ширину 8,27 дюйма и 0,98 дюйма.
Чтобы настроить размерности страниц отчета Report API программно, присвойте пользовательские mlreportgen.dom.PageSize
и mlreportgen.dom.PageMargins
объекты к объекту размещения, используемому целым отчетом или разделом отчета. Объект размещения для всего отчета является mlreportgen.report.ReportLayout
объект, который назначается Layout
свойство mlreportgen.report.Report
объект. Размещением для раздела отчета является mlreportgen.report.ReporterLayout
объект, который назначается Layout
свойство объекта reporter, который представляет раздел. Объекты этих классов репортера имеют Layout
свойство, которое можно использовать для настройки размерностей страниц для раздела:
mlreportgen.report.TitlePage
mlreportgen.report.TableOfContents
mlreportgen.report.ListOfFigures
mlreportgen.report.ListOfTables
mlreportgen.report.ListOfCaptions
mlreportgen.report.Chapter
Если вы настраиваете размерности страниц для всего отчета, а затем переопределяете размерности для раздела отчета, задайте все свойства PageSize
или PageMargins
объекты, которые вы создаете для сечения. В противном случае свойства, которые вы не задаете, имеют значения по умолчанию, которые могут отличаться от значений, заданных для всего отчета.
В этом примере вы создаете отчет, который имеет A4 страницу размерностей а затем переопределяете эти размерности для заголовка страницы.
Импортируйте пакеты DOM и Report 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.dom.PageMargins
| mlreportgen.dom.PageSize
| mlreportgen.report.Report
| mlreportgen.report.Reporter
| mlreportgen.report.ReporterLayout
| mlreportgen.report.ReportLayout