PDF и HTML, детали и отверстия

В этом примере показано, как:

  • Задайте шаблон детали документа, имеющий отверстия.

  • Вставьте часть документа в отчет программно и заполните отверстия.

  • Вставка детали документа оглавления.

Этот пример использует шаблон PDF и отчет. Однако этот же процесс можно использовать и для отчетов HTML. Замените информацию о типе документа соответствующей HTML на протяжении всего примера.

Добавление шаблона в библиотеку шаблонов деталей PDF

В этом примере начните с пакета шаблона PDF по умолчанию.

  1. Создайте копию пакета шаблона по умолчанию.

    mlreportgen.dom.Document.createTemplate('myPDFtemplate','pdf');
  2. Разархивируйте пакет шаблона.

    unzipTemplate('myPDFtemplate.pdftx');
  3. В текущей папке откройте разархивированную папку шаблона 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>
    
  4. Создайте шаблон детали документа с именем Author. Деталь документа может содержать любую комбинацию фиксированного текста и отверстий. Этот шаблон детали документа содержит фиксированный текст Author и отверстие для имени автора.

    <dptemplate name="Author">
          <p class="Author">
          <span>Author: </span><hole id="AuthorName" />  
          </p>
                
     </dptemplate>
    
  5. Добавьте новый шаблон детали документа в библиотеку. Поскольку при вызове из 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>
    
  6. Переупакуйте шаблон в новый шаблон с именем 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 добавляет к документу любое фиксированное содержимое шаблона между предыдущим отверстием (или началом детали документа) и текущим отверстием.

См. также

Похожие темы