diff options
Diffstat (limited to 'inc/3rdparty/libraries/tcpdf/tools/tcpdf_addfont.php')
-rwxr-xr-x | inc/3rdparty/libraries/tcpdf/tools/tcpdf_addfont.php | 269 |
1 files changed, 269 insertions, 0 deletions
diff --git a/inc/3rdparty/libraries/tcpdf/tools/tcpdf_addfont.php b/inc/3rdparty/libraries/tcpdf/tools/tcpdf_addfont.php new file mode 100755 index 00000000..c0b258ec --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/tools/tcpdf_addfont.php | |||
@@ -0,0 +1,269 @@ | |||
1 | #!/usr/bin/php -q | ||
2 | <?php | ||
3 | //============================================================+ | ||
4 | // File name : tcpdf_addfont.php | ||
5 | // Version : 1.0.002 | ||
6 | // Begin : 2013-05-13 | ||
7 | // Last Update : 2013-08-05 | ||
8 | // Authors : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com | ||
9 | // Remi Collet | ||
10 | // License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html) | ||
11 | // ------------------------------------------------------------------- | ||
12 | // Copyright (C) 2011-2013 Nicola Asuni - Tecnick.com LTD | ||
13 | // | ||
14 | // This file is part of TCPDF software library. | ||
15 | // | ||
16 | // TCPDF is free software: you can redistribute it and/or modify it | ||
17 | // under the terms of the GNU Lesser General Public License as | ||
18 | // published by the Free Software Foundation, either version 3 of the | ||
19 | // License, or (at your option) any later version. | ||
20 | // | ||
21 | // TCPDF is distributed in the hope that it will be useful, but | ||
22 | // WITHOUT ANY WARRANTY; without even the implied warranty of | ||
23 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
24 | // See the GNU Lesser General Public License for more details. | ||
25 | // | ||
26 | // You should have received a copy of the License | ||
27 | // along with TCPDF. If not, see | ||
28 | // <http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT>. | ||
29 | // | ||
30 | // See LICENSE.TXT file for more information. | ||
31 | // ------------------------------------------------------------------- | ||
32 | // | ||
33 | // Description : This is a command line script to generate TCPDF fonts. | ||
34 | // | ||
35 | //============================================================+ | ||
36 | |||
37 | /** | ||
38 | * @file | ||
39 | * This is a command line script to generate TCPDF fonts.<br> | ||
40 | * @package com.tecnick.tcpdf | ||
41 | * @version 1.0.000 | ||
42 | */ | ||
43 | |||
44 | if (php_sapi_name() != 'cli') { | ||
45 | echo 'You need to run this command from console.'; | ||
46 | exit(1); | ||
47 | } | ||
48 | |||
49 | $tcpdf_include_dirs = array(realpath(dirname(__FILE__).'/../tcpdf.php'), '/usr/share/php/tcpdf/tcpdf.php', '/usr/share/tcpdf/tcpdf.php', '/usr/share/php-tcpdf/tcpdf.php', '/var/www/tcpdf/tcpdf.php', '/var/www/html/tcpdf/tcpdf.php', '/usr/local/apache2/htdocs/tcpdf/tcpdf.php'); | ||
50 | foreach ($tcpdf_include_dirs as $tcpdf_include_path) { | ||
51 | if (@file_exists($tcpdf_include_path)) { | ||
52 | require_once($tcpdf_include_path); | ||
53 | break; | ||
54 | } | ||
55 | } | ||
56 | |||
57 | /** | ||
58 | * Display help guide for this command. | ||
59 | */ | ||
60 | function showHelp() { | ||
61 | $help = <<<EOD | ||
62 | tcpdf_addfont - command line tool to convert fonts for the TCPDF library. | ||
63 | |||
64 | Usage: tcpdf_addfont.php [ options ] -i fontfile[,fontfile]... | ||
65 | |||
66 | Options: | ||
67 | |||
68 | -t | ||
69 | --type Font type. Leave empty for autodetect mode. | ||
70 | Valid values are: | ||
71 | TrueTypeUnicode | ||
72 | TrueType | ||
73 | Type1 | ||
74 | CID0JP = CID-0 Japanese | ||
75 | CID0KR = CID-0 Korean | ||
76 | CID0CS = CID-0 Chinese Simplified | ||
77 | CID0CT = CID-0 Chinese Traditional | ||
78 | |||
79 | -e | ||
80 | --enc Name of the encoding table to use. Leave empty for | ||
81 | default mode. Omit this parameter for TrueType Unicode | ||
82 | and symbolic fonts like Symbol or ZapfDingBats. | ||
83 | |||
84 | -f | ||
85 | --flags Unsigned 32-bit integer containing flags specifying | ||
86 | various characteristics of the font (PDF32000:2008 - | ||
87 | 9.8.2 Font Descriptor Flags): +1 for fixed font; +4 for | ||
88 | symbol or +32 for non-symbol; +64 for italic. Fixed and | ||
89 | Italic mode are generally autodetected so you have to | ||
90 | set it to 32 = non-symbolic font (default) or 4 = | ||
91 | symbolic font. | ||
92 | |||
93 | -o | ||
94 | --outpath Output path for generated font files (must be writeable | ||
95 | by the web server). Leave empty for default font folder. | ||
96 | |||
97 | -p | ||
98 | --platid Platform ID for CMAP table to extract (when building a | ||
99 | Unicode font for Windows this value should be 3, for | ||
100 | Macintosh should be 1). | ||
101 | |||
102 | -n | ||
103 | --encid Encoding ID for CMAP table to extract (when building a | ||
104 | Unicode font for Windows this value should be 1, for | ||
105 | Macintosh should be 0). When Platform ID is 3, legal | ||
106 | values for Encoding ID are: 0=Symbol, 1=Unicode, | ||
107 | 2=ShiftJIS, 3=PRC, 4=Big5, 5=Wansung, 6=Johab, | ||
108 | 7=Reserved, 8=Reserved, 9=Reserved, 10=UCS-4. | ||
109 | |||
110 | -b | ||
111 | --addcbbox Includes the character bounding box information on the | ||
112 | php font file. | ||
113 | |||
114 | -l | ||
115 | --link Link to system font instead of copying the font data # | ||
116 | (not transportable) - Note: do not work with Type1 fonts. | ||
117 | |||
118 | -i | ||
119 | --fonts Comma-separated list of input font files. | ||
120 | |||
121 | -h | ||
122 | --help Display this help and exit. | ||
123 | EOD; | ||
124 | echo $help."\n\n"; | ||
125 | exit(0); | ||
126 | } | ||
127 | |||
128 | // remove the name of the executing script | ||
129 | array_shift($argv); | ||
130 | |||
131 | // no options chosen | ||
132 | if (!is_array($argv)) { | ||
133 | showHelp(); | ||
134 | } | ||
135 | |||
136 | // initialize the array of options | ||
137 | $options = array('type'=>'', 'enc'=>'', 'flags'=>32, 'outpath'=>K_PATH_FONTS, 'platid'=>3, 'encid'=>1, 'addcbbox'=>false, 'link'=>false); | ||
138 | |||
139 | // short input options | ||
140 | $sopt = ''; | ||
141 | $sopt .= 't:'; | ||
142 | $sopt .= 'e:'; | ||
143 | $sopt .= 'f:'; | ||
144 | $sopt .= 'o:'; | ||
145 | $sopt .= 'p:'; | ||
146 | $sopt .= 'n:'; | ||
147 | $sopt .= 'b'; | ||
148 | $sopt .= 'l'; | ||
149 | $sopt .= 'i:'; | ||
150 | $sopt .= 'h'; | ||
151 | |||
152 | // long input options | ||
153 | $lopt = array(); | ||
154 | $lopt[] = 'type:'; | ||
155 | $lopt[] = 'enc:'; | ||
156 | $lopt[] = 'flags:'; | ||
157 | $lopt[] = 'outpath:'; | ||
158 | $lopt[] = 'platid:'; | ||
159 | $lopt[] = 'encid:'; | ||
160 | $lopt[] = 'addcbbox'; | ||
161 | $lopt[] = 'link'; | ||
162 | $lopt[] = 'fonts:'; | ||
163 | $lopt[] = 'help'; | ||
164 | |||
165 | // parse input options | ||
166 | $inopt = getopt($sopt, $lopt); | ||
167 | |||
168 | // import options (with some sanitization) | ||
169 | foreach ($inopt as $opt => $val) { | ||
170 | switch ($opt) { | ||
171 | case 't': | ||
172 | case 'type': { | ||
173 | if (in_array($val, array('TrueTypeUnicode', 'TrueType', 'Type1', 'CID0JP', 'CID0KR', 'CID0CS', 'CID0CT'))) { | ||
174 | $options['type'] = $val; | ||
175 | } | ||
176 | break; | ||
177 | } | ||
178 | case 'e': | ||
179 | case 'enc': { | ||
180 | $options['enc'] = $val; | ||
181 | break; | ||
182 | } | ||
183 | case 'f': | ||
184 | case 'flags': { | ||
185 | $options['flags'] = intval($val); | ||
186 | break; | ||
187 | } | ||
188 | case 'o': | ||
189 | case 'outpath': { | ||
190 | $options['outpath'] = realpath($val); | ||
191 | if (substr($options['outpath'], -1) != '/') { | ||
192 | $options['outpath'] .= '/'; | ||
193 | } | ||
194 | break; | ||
195 | } | ||
196 | case 'p': | ||
197 | case 'platid': { | ||
198 | $options['platid'] = min(max(1, intval($val)), 3); | ||
199 | break; | ||
200 | } | ||
201 | case 'n': | ||
202 | case 'encid': { | ||
203 | $options['encid'] = min(max(0, intval($val)), 10); | ||
204 | break; | ||
205 | } | ||
206 | case 'b': | ||
207 | case 'addcbbox': { | ||
208 | $options['addcbbox'] = true; | ||
209 | break; | ||
210 | } | ||
211 | case 'l': | ||
212 | case 'link': { | ||
213 | $options['link'] = true; | ||
214 | break; | ||
215 | } | ||
216 | case 'i': | ||
217 | case 'fonts': { | ||
218 | $options['fonts'] = explode(',', $val); | ||
219 | break; | ||
220 | } | ||
221 | case 'h': | ||
222 | case 'help': | ||
223 | default: { | ||
224 | showHelp(); | ||
225 | break; | ||
226 | } | ||
227 | } // end of switch | ||
228 | } // end of while loop | ||
229 | |||
230 | if (empty($options['fonts'])) { | ||
231 | echo "ERROR: missing input fonts (try --help for usage)\n\n"; | ||
232 | exit(2); | ||
233 | } | ||
234 | |||
235 | // check the output path | ||
236 | if (!is_dir($options['outpath']) OR !is_writable($options['outpath'])) { | ||
237 | echo "ERROR: Can't write to ".$options['outpath']."\n\n"; | ||
238 | exit(3); | ||
239 | } | ||
240 | |||
241 | echo "\n>>> Converting fonts for TCPDF:\n"; | ||
242 | |||
243 | echo '*** Output dir set to '.$options['outpath']."\n"; | ||
244 | |||
245 | // check if there are conversion errors | ||
246 | $errors = false; | ||
247 | |||
248 | foreach ($options['fonts'] as $font) { | ||
249 | $fontfile = realpath($font); | ||
250 | $fontname = TCPDF_FONTS::addTTFfont($fontfile, $options['type'], $options['enc'], $options['flags'], $options['outpath'], $options['platid'], $options['encid'], $options['addcbbox'], $options['link']); | ||
251 | if ($fontname === false) { | ||
252 | $errors = true; | ||
253 | echo "--- ERROR: can't add ".$font."\n"; | ||
254 | } else { | ||
255 | echo "+++ OK : ".$fontfile.' added as '.$fontname."\n"; | ||
256 | } | ||
257 | } | ||
258 | |||
259 | if ($errors) { | ||
260 | echo "--- Process completed with ERRORS!\n\n"; | ||
261 | exit(4); | ||
262 | } | ||
263 | |||
264 | echo ">>> Process successfully completed!\n\n"; | ||
265 | exit(0); | ||
266 | |||
267 | //============================================================+ | ||
268 | // END OF FILE | ||
269 | //============================================================+ | ||