Создание разделов макета страницы

Вы можете добавить разделы в отчет с помощью mlreportgen.report.Section класс. Этот предопределенный класс автоматически добавляет форматированный раздел в отчет. Форматирование по умолчанию является ориентацией портрета с полями по умолчанию и номером страницы в нижнем колонтитуле. Вы можете переопределить размещение и содержимое раздела. Гораздо проще и эффективнее использовать этот класс, а не использовать объекты DOM для создания раздела. Для получения информации и примеров смотрите mlreportgen.report.Section

Можно также использовать объекты DOM для создания сечений. Можно разделить документ Word или PDF на разделы, каждый из которых имеет собственный макет страницы. Макет страницы включает поля страницы, ориентацию страницы, а также верхние и нижние колонтитулы.

Задайте макеты страницы в шаблоне Word

Каждый шаблон Word имеет по крайней мере один раздел макета страницы. Вы можете использовать Word, чтобы создать столько дополнительных разделов, сколько вам нужно. Для примера в основном шаблоне для отчета можно создать разделы для заголовка страницы отчета, таблицы содержимого и глав. Для получения информации о создании разделов макета страницы в шаблоне Word см. документацию Word.

Определение макетов страницы в шаблоне PDF

Вы определяете макеты страницы в шаблоне PDF с помощью <layout> элемент. Можно использовать <layout> элемент в основном шаблоне (root.html), и в шаблонах деталей документа.

Можно использовать эти атрибуты с <layout> элемент.

style

page-margin: top left bottom right header footer gutter; page-size: height width orientation

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 Макетов страницы

Водяной знак можно поместить в PDF макет страницы. Водяной знак - это изображение, которое появляется в фоновом режиме страницы, например, слово Draft или Confidential. Он запускается за текстом на каждой странице, к которой он применяется. Вы можете использовать любой из этих типов файлов для изображения: .bmp, .jpg, .pdf, .png, .svg, и .tiff.

Использование <watermark> в <layout> элемент. Укажите водяной знак как файл изображений, хранящийся в пакете шаблонов. Чтобы сохранить изображение в пакете шаблонов, разархивируйте пакет шаблонов, скопируйте изображение в папку, а затем снова заархивируйте шаблон. Для примера:

  1. Разархивируйте шаблон.

    unzipTemplate('MyTemplate.pdftx');  
  2. Скопируйте изображение водяного знака в папку MyTemplate. Чтобы сохранить ваши изображения организованными, скопируйте изображение в images папка.

  3. Добавьте 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>
  4. ZIP шаблон.

    zipTemplate('MyTemplate.pdftx','MyTemplate');
  5. Удалите папку MyTemplate.

  6. Создайте отчет, который использует этот шаблон с помощью 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);

См. также

Классы

Похожие темы