1<?php 2//============================================================+ 3// File name : example_059.php 4// Begin : 2010-05-06 5// Last Update : 2013-05-14 6// 7// Description : Example 059 for TCPDF class 8// Table Of Content using HTML templates. 9// 10// Author: Nicola Asuni 11// 12// (c) Copyright: 13// Nicola Asuni 14// Tecnick.com LTD 15// www.tecnick.com 16// info@tecnick.com 17//============================================================+ 18 19/** 20 * Creates an example PDF TEST document using TCPDF 21 * @package com.tecnick.tcpdf 22 * @abstract TCPDF - Example: Table Of Content using HTML templates. 23 * @author Nicola Asuni 24 * @since 2010-05-06 25 */ 26 27// Include the main TCPDF library (search for installation path). 28require_once('tcpdf_include.php'); 29 30/** 31 * TCPDF class extension with custom header and footer for TOC page 32 */ 33class TOC_TCPDF extends TCPDF { 34 35 /** 36 * Overwrite Header() method. 37 * @public 38 */ 39 public function Header() { 40 if ($this->tocpage) { 41 // *** replace the following parent::Header() with your code for TOC page 42 parent::Header(); 43 } else { 44 // *** replace the following parent::Header() with your code for normal pages 45 parent::Header(); 46 } 47 } 48 49 /** 50 * Overwrite Footer() method. 51 * @public 52 */ 53 public function Footer() { 54 if ($this->tocpage) { 55 // *** replace the following parent::Footer() with your code for TOC page 56 parent::Footer(); 57 } else { 58 // *** replace the following parent::Footer() with your code for normal pages 59 parent::Footer(); 60 } 61 } 62 63} // end of class 64 65// create new PDF document 66$pdf = new TOC_TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 67 68// set document information 69$pdf->SetCreator(PDF_CREATOR); 70$pdf->SetAuthor('Nicola Asuni'); 71$pdf->SetTitle('TCPDF Example 059'); 72$pdf->SetSubject('TCPDF Tutorial'); 73$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); 74 75// set default header data 76$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 059', PDF_HEADER_STRING); 77 78// set header and footer fonts 79$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); 80$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); 81 82// set default monospaced font 83$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); 84 85// set margins 86$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); 87$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); 88$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); 89 90// set auto page breaks 91$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); 92 93// set image scale factor 94$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); 95 96// set some language-dependent strings (optional) 97if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { 98 require_once(dirname(__FILE__).'/lang/eng.php'); 99 $pdf->setLanguageArray($l); 100} 101 102// set font 103$pdf->SetFont('helvetica', '', 10); 104 105// --------------------------------------------------------- 106 107// create some content ... 108 109// add a page 110$pdf->AddPage(); 111 112// set a bookmark for the current position 113$pdf->Bookmark('Chapter 1', 0, 0, '', 'B', array(0,64,128)); 114 115// print a line using Cell() 116$pdf->Cell(0, 10, 'Chapter 1', 0, 1, 'L'); 117 118$pdf->AddPage(); 119$pdf->Bookmark('Paragraph 1.1', 1, 0, '', '', array(128,0,0)); 120$pdf->Cell(0, 10, 'Paragraph 1.1', 0, 1, 'L'); 121 122$pdf->AddPage(); 123$pdf->Bookmark('Paragraph 1.2', 1, 0, '', '', array(128,0,0)); 124$pdf->Cell(0, 10, 'Paragraph 1.2', 0, 1, 'L'); 125 126$pdf->AddPage(); 127$pdf->Bookmark('Sub-Paragraph 1.2.1', 2, 0, '', 'I', array(0,128,0)); 128$pdf->Cell(0, 10, 'Sub-Paragraph 1.2.1', 0, 1, 'L'); 129 130$pdf->AddPage(); 131$pdf->Bookmark('Paragraph 1.3', 1, 0, '', '', array(128,0,0)); 132$pdf->Cell(0, 10, 'Paragraph 1.3', 0, 1, 'L'); 133 134// add some pages and bookmarks 135for ($i = 2; $i < 12; $i++) { 136 $pdf->AddPage(); 137 $pdf->Bookmark('Chapter '.$i, 0, 0, '', 'B', array(0,64,128)); 138 $pdf->Cell(0, 10, 'Chapter '.$i, 0, 1, 'L'); 139} 140 141 142// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 144 145// add a new page for TOC 146$pdf->addTOCPage(); 147 148// write the TOC title and/or other elements on the TOC page 149$pdf->SetFont('times', 'B', 16); 150$pdf->MultiCell(0, 0, 'Table Of Content', 0, 'C', 0, 1, '', '', true, 0); 151$pdf->Ln(); 152$pdf->SetFont('helvetica', '', 10); 153 154// define styles for various bookmark levels 155$bookmark_templates = array(); 156 157/* 158 * The key of the $bookmark_templates array represent the bookmark level (from 0 to n). 159 * The following templates will be replaced with proper content: 160 * #TOC_DESCRIPTION# this will be replaced with the bookmark description; 161 * #TOC_PAGE_NUMBER# this will be replaced with page number. 162 * 163 * NOTES: 164 * If you want to align the page number on the right you have to use a monospaced font like courier, otherwise you can left align using any font type. 165 * The following is just an example, you can get various styles by combining various HTML elements. 166 */ 167 168// A monospaced font for the page number is mandatory to get the right alignment 169$bookmark_templates[0] = '<table border="0" cellpadding="0" cellspacing="0" style="background-color:#EEFAFF"><tr><td width="155mm"><span style="font-family:times;font-weight:bold;font-size:12pt;color:black;">#TOC_DESCRIPTION#</span></td><td width="25mm"><span style="font-family:courier;font-weight:bold;font-size:12pt;color:black;" align="right">#TOC_PAGE_NUMBER#</span></td></tr></table>'; 170$bookmark_templates[1] = '<table border="0" cellpadding="0" cellspacing="0"><tr><td width="5mm"> </td><td width="150mm"><span style="font-family:times;font-size:11pt;color:green;">#TOC_DESCRIPTION#</span></td><td width="25mm"><span style="font-family:courier;font-weight:bold;font-size:11pt;color:green;" align="right">#TOC_PAGE_NUMBER#</span></td></tr></table>'; 171$bookmark_templates[2] = '<table border="0" cellpadding="0" cellspacing="0"><tr><td width="10mm"> </td><td width="145mm"><span style="font-family:times;font-size:10pt;color:#666666;"><i>#TOC_DESCRIPTION#</i></span></td><td width="25mm"><span style="font-family:courier;font-weight:bold;font-size:10pt;color:#666666;" align="right">#TOC_PAGE_NUMBER#</span></td></tr></table>'; 172// add other bookmark level templates here ... 173 174// add table of content at page 1 175// (check the example n. 45 for a text-only TOC 176$pdf->addHTMLTOC(1, 'INDEX', $bookmark_templates, true, 'B', array(128,0,0)); 177 178// end of TOC page 179$pdf->endTOCPage(); 180 181// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 183// --------------------------------------------------------- 184 185//Close and output PDF document 186$pdf->Output('example_059.pdf', 'D'); 187 188//============================================================+ 189// END OF FILE 190//============================================================+ 191