Можно добавить разделы в отчет с помощью mlreportgen.report.Section класс. Этот предопределенный класс автоматически добавляет форматированный раздел в отчет. Форматирование по умолчанию - это портретная ориентация с полями по умолчанию и номером страницы в нижнем колонтитуле. Можно переопределить компоновку и содержимое раздела. Использовать этот класс гораздо проще и эффективнее, чем использовать объекты DOM для создания раздела. Сведения и примеры см. в разделе mlreportgen.report.Section
Для создания сечений можно также использовать объекты DOM. Документ Word или PDF можно разделить на разделы с собственным макетом страницы. Макет страницы включает поля страницы, ориентацию страницы и колонтитулы.
Каждый шаблон Word имеет хотя бы один раздел макета страницы. Можно использовать Word для создания необходимого количества дополнительных разделов. Например, в основном шаблоне отчета можно создать разделы для титульной страницы отчета, оглавления и глав. Сведения о создании разделов макета страницы в шаблоне Word см. в документации Word.
Макеты страниц определяются в шаблоне PDF с помощью <layout> элемент. Вы можете использовать <layout> элемент в основном шаблоне (root.html) и в шаблонах деталей документа.
Эти атрибуты можно использовать с помощью <layout> элемент.
style
|
|
first-page-number | Количество первых страниц в макете |
page-number-format | n или N для числовых, a, A, i, I
|
section-break | Где начать раздел для этого макета: Odd Page, Even Page, или Next Page |
Например, этот элемент определяет компоновку с помощью:
Верхнее, нижнее, левое и правое поля размером 1 дюйм
Высота верхнего и нижнего колонтитулов 0,5 дюйма
Размер желоба (место для страниц привязки) 0
Размер страницы 8,5 дюйма на 11 дюймов в портретной ориентации
<layout style="page-margin: 1in 1in 1in 1in 0.5in 0.5in 0in; page-size: 8.5in 11in portrait" />
Это <layout> элемент включает нижний колонтитул страницы. Нижний колонтитул страницы DefaultPageFooter должен быть определен в шаблоне детали документа.
<layout style="page-margin: 1in 1in 1in 1in 0.5in 0.5in 0in; page-size: 8.5in 11in portrait"> <pfooter type="default" template-name="DefaultPageFooter" /> </layout>
Макеты страниц можно создавать в частях документа. Например, этот код определяет шаблон детали документа с именем Chapter включает макет страницы. Макет включает верхний и нижний колонтитулы страницы и задает формат номера страницы с помощью <pnumber> элемент. В этом случае также определите шаблоны деталей для элементов верхнего и нижнего колонтитулов страницы. См. раздел Использование колонтитулов страниц в шаблоне.
<dptemplate name="Chapter"> <layout style="page-margin: 1in 1in 1in 1in 0.5in 0.5in 0in; page-size: 8.5in 11in portrait"> <pheader type="default" template-name="MyPageHeader"/> <pfooter type="default" template-name="MyPageFooter"/> <pnumber format="1" /> </layout> <!-- Define content for your layout here--fixed text and holes as needed --> </dptemplate>
Для использования формата вставьте деталь документа в отчет с помощью программы. Этот код предполагает наличие одного отверстия в детали документа Chapter. В части документа используется определение макета страницы, указанное в Chapter шаблон детали документа.
import mlreportgen.dom.* d = Document('myDocPartEx','pdf','mytemplate'); open(d); % Assign the Chapter document part template to the variable dp dp = DocumentPart(d,'Chapter'); % Move to each hole in this document part and append content moveToNextHole(dp); append(dp,'My text to fill hole'); % Append this document part to the document append(d,dp); close(d); rptview(d.OutputPath);
Водяной знак можно поместить в макет страницы PDF. Водяной знак - это изображение, которое появляется на заднем плане страницы, например слово Draft или Confidential. Он проходит за текстом на каждой странице, к которой он применяется. Для изображения можно использовать любой из следующих типов файлов: .bmp, .jpg, .pdf, .png, .svg, и .tiff.
Использовать <watermark> в <layout> элемент. Укажите водяной знак как файл изображения, хранящийся в пакете шаблона. Чтобы сохранить изображение в пакете шаблона, распакуйте пакет шаблона, скопируйте изображение в папку и снова скопируйте шаблон. Например:
Распакуйте шаблон.
unzipTemplate('MyTemplate.pdftx'); Копирование изображения водяного знака в папку MyTemplate. Чтобы сохранить организацию изображений, скопируйте их в images папка.
Добавить watermark к макету страницы в шаблоне. Например, добавьте водяной знак к компоновке по умолчанию в root.html.
<layout style="page-margin: 1in 1in 1in 1in 0.5in 0.5in 0in; page-size: 8.5in 11in portrait" > <watermark src="./images/myfile.png" width="6in" /> </layout>
Запишите шаблон.
zipTemplate('MyTemplate.pdftx','MyTemplate');
Удалить папку MyTemplate.
Создайте отчет, в котором используется этот шаблон с помощью DOM API, или создайте отчет на основе формы в проводнике отчетов, в компоненте «Макет страницы PDF» которого используется этот макет.
Документ или деталь документа CurrentPageLayout свойство указывает на объект макета страницы, который определяет макет страницы текущего раздела на основе шаблона документа или детали документа. При каждом перемещении в новое сечение (путем перемещения в отверстие в начале сечения) DOM обновляет CurrentPageLayout для указания на объект макета страницы, который задает свойства макета страницы раздела. Макет страницы раздела можно изменить, изменив свойства объекта макета или заменив его новым объектом.
Например, можно изменить ориентацию раздела или добавить колонтитулы страницы. Внесите эти изменения перед добавлением содержимого в новый раздел. При замене текущего объекта компоновки используйте mlreportgen.dom.DOCXPageLayout для документов Word и mlreportgen.dom.PDFPageLayout для документов PDF.
Свойства компоновки, определенные шаблоном, можно изменять программным путем. Например, ориентация страницы шаблона Word по умолчанию DOM является портретной. В этом примере изменяется ориентация на ландшафт для размещения широких таблиц. Код заменяет высоту и ширину страницы на новую ориентацию страницы.
import mlreportgen.dom.* rpt = Document('test','docx'); open(rpt); sect = rpt.CurrentPageLayout; pageSize = sect.PageSize; pageSize.Orientation = 'landscape'; saveHeight = pageSize.Height; pageSize.Height = pageSize.Width; pageSize.Width = saveHeight; table = append(rpt,magic(22)); table.Border = 'solid'; table.ColSep = 'solid'; table.RowSep = 'solid'; close(rpt); rptview(rpt.OutputPath);
Можно добавить DOCXPageLayout объект (для документов Word) или PDFPageLayout (для документов PDF), чтобы запустить новый раздел макета страницы программным путем. Для отчетов DOCX: append метод может указать абзац для завершения предыдущего раздела.
append(rptObj,paraObj,LayoutObj)
Если не указать абзац в append перед запуском нового раздела DOM API вставляет пустой абзац. В этом примере используется синтаксис конечного абзаца, чтобы избежать вставки пустого абзаца в конце предыдущего раздела.
import mlreportgen.dom.* rpt = Document('test','docx'); append(rpt,Heading(1,'Magic Square Report','Heading 1')); sect = DOCXPageLayout; sect.PageSize.Orientation = 'landscape'; sect.PageSize.Height = '8.5in'; sect.PageSize.Width = '11in'; append(rpt,Paragraph('The next page shows a magic square.'),sect); table = append(rpt,magic(22)); table.Border = 'solid'; table.ColSep = 'solid'; table.RowSep = 'solid'; close(rpt); rptview(rpt.OutputPath);
mlreportgen.dom.DOCXPageLayout | mlreportgen.dom.PageMargins | mlreportgen.dom.PageSize | mlreportgen.dom.PDFPageLayout