В этом примере показано, как сосредоточить формальное изображение, которое является изображением с заголовком на альбомной странице для отчетов PDF.
Пример создает API Отчета отчет PDF, который имеет альбомный макет и использует centerFormalImage
локальная функция, чтобы добавить формальные изображения в центре страницы.
Импортируйте DOM и пакеты API Отчета так, чтобы вы не использовали долго, полностью определенные имена классов.
import mlreportgen.dom.* import mlreportgen.report.*
Создайте отчет PDF.
rpt = Report("myreport","pdf"); open(rpt);
Создайте объект макета страницы.
pageLayoutObj = PDFPageLayout;
Задайте ориентацию страницы, высоту и ширину.
pageLayoutObj.PageSize.Orientation = "landscape"; pageLayoutObj.PageSize.Height = "8.5in"; pageLayoutObj.PageSize.Width = "11in";
Задайте поля страницы.
pageLayoutObj.PageMargins.Top = "0.5in"; pageLayoutObj.PageMargins.Bottom = "0.5in"; pageLayoutObj.PageMargins.Left = "0.5in"; pageLayoutObj.PageMargins.Right = "0.5in"; pageLayoutObj.PageMargins.Header = "0.3in"; pageLayoutObj.PageMargins.Footer = "0.3in";
Добавьте объект макета страницы в отчет.
add(rpt,pageLayoutObj);
Создайте формальные изображения и вызовите centerFormalImage
локальная функция, чтобы добавить эти формальные изображения в центре страницы.
formalImg1 = FormalImage( ... "Image",which("ngc6543a.jpg"), ... "Caption","Cat's Eye Nebula or NGC 6543"); centerFormalImage(formalImg1,rpt); formalImg2 = FormalImage( ... "Image",which("peppers.png"), ... "Caption","Peppers"); centerFormalImage(formalImg2,rpt);
Закройте и просмотрите отчет.
close(rpt); rptview(rpt);
centerFormalImage
Локальная функцияЭта функция добавляет заданное формальное изображение в центре страницы в заданном отчете PDF. Функция использует невидимый Table
DOM сделать размещение.
function centerFormalImage(formalImage,rpt)
Импортируйте API DOM, API Отчета и сервисные пакеты генератора отчетов так, чтобы вы не использовали долго, полностью определенные имена классов.
import mlreportgen.dom.* import mlreportgen.report.* import mlreportgen.utils.*
Чтобы определить текущий размер страницы и поле страницы, получите текущий макет страницы отчета. Информация о макете страницы используется, чтобы измерить таблицу, которая составлена на последующем шаге.
pageLayout = getReportLayout(rpt); pageSize = pageLayout.PageSize; pageMargins = pageLayout.PageMargins;
Вычислите ширину тела страницы. Ширина тела страницы обозначает страницу width, которая доступна для содержимого. Для отчета PDF ширина тела страницы определяется путем вычитания левого и правого граничного размера из страницы width.
bodyWidth = units.toInches(pageSize.Width) - ... units.toInches(pageMargins.Left) - ... units.toInches(pageMargins.Right); bodyWidth = sprintf("%0.2fin",bodyWidth);
Вычислите высоту тела страницы. Высота тела страницы обозначает высоту страницы, которая доступна для содержимого. Для отчета PDF высота тела страницы определяется путем вычитания верхнего поля, нижнего поля, заголовка и размера нижнего колонтитула от высоты страницы.
bodyHeight = units.toInches(pageSize.Height) - ... units.toInches(pageMargins.Top) - ... units.toInches(pageMargins.Bottom) - ... units.toInches(pageMargins.Header) - ... units.toInches(pageMargins.Footer); bodyHeight = sprintf("%0.2fin",bodyHeight);
Используйте getImageReporter
метод FormalImage
генератор отчетов, чтобы получить генератор отчетов изображений и getCaptionReporter
метод, чтобы получить генератор отчетов заголовка.
imageReporter = getImageReporter(formalImage,rpt); captionReporter = getCaptionReporter(formalImage);
Используйте getImpl
методы изображения и генераторов отчетов заголовка, чтобы получить соответствующие реализации DOM.
imageImpl = getImpl(imageReporter,rpt); captionImpl = getImpl(captionReporter,rpt);
Реализации DOM содержат Paragraph
DOM это содержит содержимое заголовка и изображение. Обновите стиль абзацев, чтобы убедиться, что нет никакого пробела вокруг абзацев и что они сосредоточены в записи таблицы, которая создается на последующем шаге.
paraStyle = { ... OuterMargin("0in","0in","0in","0in"), ... HAlign("center") ... }; imagePara = clone(imageImpl.Children(1)); imagePara.Style = [imagePara.Style, paraStyle]; captionPara = clone(captionImpl.Children(1)); captionPara.Style = [captionPara.Style, paraStyle];
Составьте невидимую таблицу размещения 1 на 1 (lo_table
). Таблица рассматривается невидимой, когда границы не заданы для таблицы и ее записей таблицы.
lo_table = Table(1); row = append(lo_table,TableRow); entry = append(row,TableEntry);
Добавьте абзацы, которые содержат изображение и содержимое заголовка к единственной записи таблицы в невидимой таблице размещения.
append(entry,imagePara); append(entry,captionPara);
Охватите таблицу к доступной ширине тела страницы.
lo_table.Width = bodyWidth;
Охватите единственную запись таблицы к доступной высоте тела страницы. Задайте форматы выравнивания по вертикали и выравнивания по горизонтали, чтобы убедиться, что изображение и заголовок сосредоточены и вертикально и горизонтально в записи таблицы.
lo_table.TableEntriesStyle = [lo_table.TableEntriesStyle ... { ... Height(bodyHeight), ... HAlign("center"), ... VAlign("middle") ... }];
Добавьте таблицу размещения в отчет.
add(rpt,lo_table);
end
mlreportgen.report.Report
| mlreportgen.dom.PDFPageLayout
| getReportLayout
| mlreportgen.utils.units
| mlreportgen.report.FormalImage
| mlreportgen.dom.Table