Projet

Général

Profil

Paste
Télécharger (6,54 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / libraries / tcpdf-version / examples / example_059.php @ 5a7e6170

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).
28
require_once('tcpdf_include.php');
29

    
30
/**
31
 * TCPDF class extension with custom header and footer for TOC page
32
 */
33
class 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)
97
if (@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
135
for ($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">&nbsp;</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">&nbsp;</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
//============================================================+