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