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