В этом примере показано, как:
Задайте шаблон детали документа, имеющий отверстия.
Вставьте часть документа в отчет программно и заполните отверстия.
Вставка детали документа оглавления.
Этот пример использует шаблон PDF и отчет. Однако этот же процесс можно использовать и для отчетов HTML. Замените информацию о типе документа соответствующей HTML на протяжении всего примера.
В этом примере начните с пакета шаблона PDF по умолчанию.
Создайте копию пакета шаблона по умолчанию.
mlreportgen.dom.Document.createTemplate('myPDFtemplate','pdf');
Разархивируйте пакет шаблона.
unzipTemplate('myPDFtemplate.pdftx');В текущей папке откройте разархивированную папку шаблона myPDFtemplate. Откройте docpart_templates.html в HTML или текстовом редакторе.
The dplibrary элемент задает библиотеку деталей документа. The 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 и заполните первые три отверстия в порядке префикса, числа и заголовка
The ReportTOC шаблон детали документа, который вставляет таблицу содержимого
The 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);
The Author шаблон детали документа включает фиксированный текст, который предшествует отверстию. moveToNextHole добавляет к документу любое фиксированное содержимое шаблона между предыдущим отверстием (или началом детали документа) и текущим отверстием.