В этом примере показано, как:
Определите шаблон детали документа с отверстиями.
Вставьте деталь документа в отчет программным путем и заполните отверстия.
Вставка детали документа оглавления.
В этом примере используется шаблон 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 добавляет в документ любое фиксированное содержимое в шаблоне между предыдущим отверстием (или началом детали документа) и текущим отверстием.