Этот пример показывает как:
Задайте шаблон части документа, который имеет дыры.
Вставьте часть документа в отчет программно и дыры заливки.
Вставьте часть документа TOC.
Этот пример использует шаблон PDF и отчет. Однако можно использовать этот тот же процесс для отчетов HTML. Замените информацию о типе документа на соответствующую информацию о формате HTML в примере.
В этом примере запустите с пакета шаблона PDF по умолчанию.
Создайте копию пакета шаблона по умолчанию.
mlreportgen.dom.Document.createTemplate('myPDFtemplate','pdf');
Разархивируйте пакет шаблона.
unzipTemplate('myPDFtemplate.pdftx');
В текущей папке откройте разархивированную папку myPDFtemplate
шаблона. Откройте docpart_templates.html
в редакторе HTML или текстовом редакторе.
Элемент dplibrary
задает библиотеку деталей документа. Элемент dptemplate
задает каждый шаблон части документа. Эта библиотека деталей документа имеет два шаблона части документа:
rgChapter
, который задает шаблон части для глав
ReportTOC
, который задает оглавление
<html> <body> <dplibrary> <dptemplate name="rgChapter"> <h1 class="rgChapterTitle"> <hole id="rgChapterTitlePrefix" default-style-name="rgChapterTitlePrefix" /> <span> </span> <hole id="rgChapterTitleNumber" default-style-name="rgChapterTitleNumber" /> <span>. </span> <hole id="rgChapterTitleText" default-style-name="rgChapterTitleText" /> </h1> <hole id="rgChapterContent"/> </dptemplate> <dptemplate name="ReportTOC"> <TOC number-of-levels ="3" leader-pattern="dots" /> </dptemplate> </dplibrary> </body> </html>
Создайте шаблон части документа, названный Author
. Часть документа может содержать любую комбинацию фиксированного текста и дыр. Этот шаблон части документа содержит фиксированный текст Author
и дыра для имени автора.
<dptemplate name="Author"> <p class="Author"> <span>Author: </span><hole id="AuthorName" /> </p> </dptemplate>
Добавьте новый шаблон части документа в библиотеку. Поскольку вы обращаетесь к части документа по наименованию, когда вы вызываете ее от API, можно поместить шаблоны в любой порядок в библиотеке. Используйте уникальное имя для каждого шаблона части документа.
<dplibrary> <dptemplate name="rgChapter"> <h1 class="rgChapterTitle"> <hole id="rgChapterTitlePrefix" default-style-name="rgChapterTitlePrefix" /> <span> </span> <hole id="rgChapterTitleNumber" default-style-name="rgChapterTitleNumber" /> <span>. </span> <hole id="rgChapterTitleText" default-style-name="rgChapterTitleText" /> </h1> <hole id="rgChapterContent"/> </dptemplate> <dptemplate name="ReportTOC"> <TOC number-of-levels ="3" leader-pattern="dots" /> </dptemplate> <dptemplate name="Author"> <p class="Author"> <span>Author: </span><hole id="AuthorName" /> </p> </dptemplate> </dplibrary>
Повторно группируйте шаблон к новому шаблону под названием myPDFtemplate2.pdftx
.
zipTemplate('myPDFtemplate2.pdftx','myPDFtemplate');
Используйте mlreportgen.dom.DocumentPart
, чтобы использовать шаблон части документа. Вам нужно:
Имя пакета шаблона, который содержит часть документа. В этом примере именем пакета шаблона является myPDFtemplate2
.
Имена части документа обрабатывают по шаблону, чтобы вызвать и порядок любых дыр, которые вы хотите заполнить. В этом примере вы вызываете:
Шаблон rgChapter
части документа и заливка первые три дыры в порядке префикса, номера и заголовка
Шаблон части документа ReportTOC
, который вставляет оглавление
Часть документа Author
обрабатывает вас по шаблону созданный и заполняет ее одну дыру
import mlreportgen.dom.* d = Document('myDocPartEx','pdf','myPDFtemplate2'); open(d); % Assign the rgChapter document part template to the variable dp dp = DocumentPart(d,'rgChapter'); % Move to each hole in this document part and append content moveToNextHole(dp); append(dp,'Chapter'); moveToNextHole(dp); append(dp,'5'); moveToNextHole(dp); append(dp,'Creating Document Part Templates'); % Append this document part to the document append(d,dp); % Append the document part ReportTOC to the document append(d,DocumentPart(d,'ReportTOC')); % You can append any allowable object between document parts or holes append(d,Paragraph('Append any allowable object or a document part.')); append(d,Paragraph('Append a document part next:')); % Assign the Author document part template to the variable dp2 dp2 = DocumentPart(d,'Author'); % Move to the next hole and fill it % Append the document part to the document moveToNextHole(dp2); append(dp2,'Charles Brown'); append(d,dp2); close(d); rptview(d.OutputPath);
Шаблон части документа Author
включает фиксированный текст, который предшествует дыре. moveToNextHole
добавляет любое фиксированное содержимое в шаблоне между предыдущей дырой (или начало части документа) и текущей дырой к документу.
mlreportgen.dom.Document.moveToNextHole