Вы можете добавить разделы в отчет с помощью 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>
ZIP шаблон.
zipTemplate('MyTemplate.pdftx','MyTemplate');
Удалите папку MyTemplate
.
Создайте отчет, который использует этот шаблон с помощью DOM API, или создайте отчет на основе форм в Report Explorer, чей PDF Page Layout компонент использует это размещение.
Документ или деталь документа CurrentPageLayout
свойство указывает на объект макета страницы, который задает макет страницы текущего раздела на основе шаблона документа или детали документа. Каждый раз, когда вы перемещаетесь к новому сечению (путем перемещения к отверстию в начале сечения), DOM обновляет CurrentPageLayout
свойство, указывающее на объект макета страницы, задающий свойства макета страницы раздела. Вы можете изменить макет страницы раздела, изменив свойства объекта размещения или заменив объект размещения новым объектом.
Например, вы можете изменить ориентацию раздела или добавить верхние и нижние колонтитулы страницы. Внесите эти изменения перед добавлением содержимого в новый раздел. При замене текущего объекта размещения используйте mlreportgen.dom.DOCXPageLayout
объект для документов и mlreportgen.dom.PDFPageLayout
Word для PDF.
Можно программно изменить заданные шаблоном свойства размещения. Например, ориентация страницы шаблона DOM по умолчанию Word является портретной. Этот пример меняет ориентацию на ландшафтную для размещения широких таблиц. Код меняет высоту и ширину страницы на новую ориентацию страницы.
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