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

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

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

Задайте макеты страницы, одним словом, обрабатывают по шаблону

Каждый шаблон 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 для числового, aAii
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. Архивируйте шаблон.

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

  6. Создайте отчет, который использует этот шаблон с помощью API DOM, или создайте основанный на форме отчет в Report Explorer, компонент PDF Page Layout которого использует это размещение.

Переместитесь по заданным шаблоном макетам страницы

Часть документа или документа 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 метод, API DOM вставляет пустой абзац прежде, чем запустить новый раздел. Этот пример использует синтаксис абзаца конца, чтобы не вставлять пустой абзац в конце предыдущего раздела.

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);

Смотрите также

Классы

Похожие темы