source: pmb4.1/trunk/fuentes/pmb/classes/fpdf_carte_lecteur.class.php @ 478

Last change on this file since 478 was 478, checked in by mabarracus, 4 years ago

copy trusty code 4.1

  • Property svn:executable set to *
File size: 11.5 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: fpdf_carte_lecteur.class.php,v 1.6 2007-03-10 09:25:48 touraine37 Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9if (! defined('FPDF_ETIQUETTE_CLASS')) {
10define('FPDF_ETIQUETTE_CLASS', 1);
11
12define('FPDF_FONTPATH','font/');
13define('FPDF_CB_TEMPPATH', './temp/');
14//require('fpdf.class.php');
15
16include('barcode/barcode.php');
17include('barcode/c128aobject.php');
18include('barcode/c128bobject.php');
19include('barcode/c128cobject.php');
20include('barcode/c39object.php');
21include('barcode/i25object.php');
22
23class FPDF_Etiquette extends FPDF
24{
25// private properties
26
27// infos planche d'étiquettes
28var $topMargin;         // Marge du haut de la planche d'étiquettes
29var $bottomMargin;      // Marge du bas de la planche d'étiquettes
30var $leftMargin;        // Marge de gauche de la planche d'étiquettes
31var $rightMargin;       // Marge de droite de la planche d'étiquettes
32
33var $xSticksPadding;    // Espacement horizontal entre 2 étiquettes
34var $ySticksPadding;    // Espacement vertical entre 2 étiquettes
35
36var $nbrXSticks;        // Nombre d'étiquettes en largeur
37var $nbrYSticks;        // Nombre d'étiquettes en hauteur
38
39var $stickTopMargin;    // Marge intérieure haut de l'étiquette
40var $stickBottomMargin; // Marge intérieure bas de l'étiquette
41var $stickLeftMargin;   // Marge intérieure gauche de l'étiquette
42var $stickRightMargin;  // Marge intérieure droite de l'étiquette
43
44var $xStick;            // Position courante de l'étiquette (unité : étiquette)
45var $yStick;            // Position courante de l'étiquette (unité : étiquette)
46var $nbrSticks;         // Nombre de sticks ajouté avec AddStick
47
48// infos code barre
49var $cbXRes;            // Résolution du code barres
50var $cbFontSize;        // Taille de la police du code barre
51var $cbStyle;           // Style du code barre
52
53/****************************************************************************
54*                                                                           *
55*                              Public methods                               *
56*                                                                           *
57****************************************************************************/
58function FPDF_Etiquette($nbrXSticks, $nbrYSticks, $orientation='P',$unit='mm',$format='A4')
59{
60        $this->FPDF($orientation, $unit, $format);
61
62        // Initialisation des propriétés
63        $this->nbrXSticks = $nbrXSticks;
64        $this->nbrYSticks = $nbrYSticks;
65        $this->nbrSticks = 0;
66
67        // par défaut, prend toute la feuille
68        // Marges de la planche
69        $this->SetPageMargins(0, 0, 0, 0);
70        // Ecart entre les étiquettes
71        $this->SetSticksPadding(0, 0);
72        // Marge intérieure des étiquettes
73        $this->SetSticksMargins(5, 5, 5, 5);
74
75        // infos code barres
76        $this->SetCBFontSize(3);
77        $this->SetCBXRes(1);
78
79        // autres
80        $this->SetAutoPageBreak(false);
81}
82
83function SetPageMargins($top, $bottom, $left, $right)
84{
85        $this->topMargin=$top;
86        $this->bottomMargin=$bottom;
87        $this->leftMargin=$left;
88        $this->rightMargin=$right;
89}
90
91function SetSticksPadding($xPadding, $yPadding)
92{
93        $this->xSticksPadding = $xPadding;
94        $this->ySticksPadding = $yPadding;
95}
96
97function SetSticksMargins($top,$bottom, $left, $right)
98{
99        $this->stickTopMargin=$top;
100        $this->stickBottomMargin=$bottom;
101        $this->stickLeftMargin=$left;
102        $this->stickRightMargin=$right;
103}
104
105function SetCBFontSize($size)
106{
107        if ($size > 5)
108                $size = 5;
109        elseif ($size < 1)
110                $size = 1;
111        $this->cbFontSize = $size;
112}
113
114function SetCBXRes($xres)
115{
116        if ($xres < 1)
117                $xres = 1;
118        elseif ($xres > 3)
119                $xres = 3;
120        $this->cbXRes = $xres;
121}
122
123function SetCBStyle($style)
124{
125        $this->cbStyle = $style;
126}
127
128function GetStickWidth()
129{
130        return ($this->w - ($this->leftMargin + $this->rightMargin) - (($this->nbrXSticks-1) * $this->xSticksPadding) )  /  $this->nbrXSticks;
131}
132
133function GetStickHeight()
134{
135        return ($this->h - ($this->topMargin + $this->bottomMargin) - (($this->nbrYSticks-1) * $this->ySticksPadding) )  /  $this->nbrYSticks;
136}
137
138function AddStick()
139{
140        if ($this->nbrSticks == 0)
141        {
142                $this->xStick = 0;
143                $this->yStick = 0;
144                $this->AddPage();
145        }
146        else
147        {
148                $this->xStick++;
149                if ($this->xStick >= $this->nbrXSticks)
150                {
151                        $this->yStick++;
152                        $this->xStick = 0;
153                        if ($this->yStick >= $this->nbrYSticks)
154                        {
155                                $this->AddPage();
156                                $this->yStick = 0;
157                        }
158                }
159        }
160
161        $this->nbrSticks++;
162}
163
164function GetStickX()
165{
166        return $this->leftMargin + (($this->w - ($this->leftMargin + $this->rightMargin)) / $this->nbrXSticks) * $this->xStick;
167}
168
169function GetStickY()
170{
171        return $this->topMargin + (($this->h - ($this->topMargin + $this->bottomMargin)) / $this->nbrYSticks) * $this->yStick;
172}
173
174function GetNbrSticks()
175{
176        return $this->nbrSticks;
177}
178
179function DrawBarcode($cb, $x,$y, $w,$h, $type='')
180{
181        $type = strToLower($type);
182        $len = strlen($cb);
183
184        // calcule la largeur du code barre en pixels
185        switch ($type)
186        {
187                case 'c128a' :
188                case 'c128b' :
189                case 'c128c' :
190                        $width = (35 + $len*11)*$this->cbXRes;
191                        break;
192                case 'i25' :
193                        $width = (8 + $len*7)*$this->cbXRes;
194                        break;
195                case 'c39' :
196                default :
197                        $width = (($len+2)*12 + $len+1)*$this->cbXRes;
198                        break;
199        }
200        // calcule la hauteur en pixels à partir de la largeur
201        $height = ($width * $h) / $w;
202
203        // crée le code barre
204        switch ($type)
205        {
206                case 'c128a' :
207                        $cbi = new C128AObject($width, $height, $this->cbStyle, "$cb");
208                        break;
209                case 'c128b' :
210                        $cbi = new C128BObject($width, $height, $this->cbStyle, "$cb");
211                        break;
212                case 'c128c' :
213                        $cbi = new C128CObject($width, $height, $this->cbStyle, "$cb");
214                        break;
215                case 'i25' :
216                        $cbi = new I25Object($width, $height, $this->cbStyle, "$cb");
217                        break;
218                case 'c39' :
219                default :
220                        $cbi = new C39Object($width, $height, $this->cbStyle, "$cb");
221                        break;
222        }
223
224        // dessine et incorpore au pdf.
225        $cbi->SetFont($this->cbFontSize);
226        $cbi->DrawObject($this->cbXRes);
227        $filename = FPDF_CB_TEMPPATH."cb".time().$cb;
228        $cbi->SaveTo($filename);
229        $cbi->DestroyObject();
230        $this->Image($filename, $x, $y, $w, $h, "png");
231        unlink($filename);
232}
233
234} // fin de la classe FPDF_Etiquette
235
236//Pour version unicode. il faudrait pouvoir ne changer que le extends UFPDF
237
238class UFPDF_Etiquette extends UFPDF
239{
240// private properties
241
242// infos planche d'étiquettes
243var $topMargin;         // Marge du haut de la planche d'étiquettes
244var $bottomMargin;      // Marge du bas de la planche d'étiquettes
245var $leftMargin;        // Marge de gauche de la planche d'étiquettes
246var $rightMargin;       // Marge de droite de la planche d'étiquettes
247
248var $xSticksPadding;    // Espacement horizontal entre 2 étiquettes
249var $ySticksPadding;    // Espacement vertical entre 2 étiquettes
250
251var $nbrXSticks;        // Nombre d'étiquettes en largeur
252var $nbrYSticks;        // Nombre d'étiquettes en hauteur
253
254var $stickTopMargin;    // Marge intérieure haut de l'étiquette
255var $stickBottomMargin; // Marge intérieure bas de l'étiquette
256var $stickLeftMargin;   // Marge intérieure gauche de l'étiquette
257var $stickRightMargin;  // Marge intérieure droite de l'étiquette
258
259var $xStick;            // Position courante de l'étiquette (unité : étiquette)
260var $yStick;            // Position courante de l'étiquette (unité : étiquette)
261var $nbrSticks;         // Nombre de sticks ajouté avec AddStick
262
263// infos code barre
264var $cbXRes;            // Résolution du code barres
265var $cbFontSize;        // Taille de la police du code barre
266var $cbStyle;           // Style du code barre
267
268/****************************************************************************
269*                                                                           *
270*                              Public methods                               *
271*                                                                           *
272****************************************************************************/
273function UFPDF_Etiquette($nbrXSticks, $nbrYSticks, $orientation='P',$unit='mm',$format='A4')
274{
275        $this->UFPDF($orientation, $unit, $format);
276
277        // Initialisation des propriétés
278        $this->nbrXSticks = $nbrXSticks;
279        $this->nbrYSticks = $nbrYSticks;
280        $this->nbrSticks = 0;
281
282        // par défaut, prend toute la feuille
283        // Marges de la planche
284        $this->SetPageMargins(0, 0, 0, 0);
285        // Ecart entre les étiquettes
286        $this->SetSticksPadding(0, 0);
287        // Marge intérieure des étiquettes
288        $this->SetSticksMargins(5, 5, 5, 5);
289
290        // infos code barres
291        $this->SetCBFontSize(3);
292        $this->SetCBXRes(1);
293
294        // autres
295        $this->SetAutoPageBreak(false);
296}
297
298function SetPageMargins($top, $bottom, $left, $right)
299{
300        $this->topMargin=$top;
301        $this->bottomMargin=$bottom;
302        $this->leftMargin=$left;
303        $this->rightMargin=$right;
304}
305
306function SetSticksPadding($xPadding, $yPadding)
307{
308        $this->xSticksPadding = $xPadding;
309        $this->ySticksPadding = $yPadding;
310}
311
312function SetSticksMargins($top,$bottom, $left, $right)
313{
314        $this->stickTopMargin=$top;
315        $this->stickBottomMargin=$bottom;
316        $this->stickLeftMargin=$left;
317        $this->stickRightMargin=$right;
318}
319
320function SetCBFontSize($size)
321{
322        if ($size > 5)
323                $size = 5;
324        elseif ($size < 1)
325                $size = 1;
326        $this->cbFontSize = $size;
327}
328
329function SetCBXRes($xres)
330{
331        if ($xres < 1)
332                $xres = 1;
333        elseif ($xres > 3)
334                $xres = 3;
335        $this->cbXRes = $xres;
336}
337
338function SetCBStyle($style)
339{
340        $this->cbStyle = $style;
341}
342
343function GetStickWidth()
344{
345        return ($this->w - ($this->leftMargin + $this->rightMargin) - (($this->nbrXSticks-1) * $this->xSticksPadding) )  /  $this->nbrXSticks;
346}
347
348function GetStickHeight()
349{
350        return ($this->h - ($this->topMargin + $this->bottomMargin) - (($this->nbrYSticks-1) * $this->ySticksPadding) )  /  $this->nbrYSticks;
351}
352
353function AddStick()
354{
355        if ($this->nbrSticks == 0)
356        {
357                $this->xStick = 0;
358                $this->yStick = 0;
359                $this->AddPage();
360        }
361        else
362        {
363                $this->xStick++;
364                if ($this->xStick >= $this->nbrXSticks)
365                {
366                        $this->yStick++;
367                        $this->xStick = 0;
368                        if ($this->yStick >= $this->nbrYSticks)
369                        {
370                                $this->AddPage();
371                                $this->yStick = 0;
372                        }
373                }
374        }
375
376        $this->nbrSticks++;
377}
378
379function GetStickX()
380{
381        return $this->leftMargin + (($this->w - ($this->leftMargin + $this->rightMargin)) / $this->nbrXSticks) * $this->xStick;
382}
383
384function GetStickY()
385{
386        return $this->topMargin + (($this->h - ($this->topMargin + $this->bottomMargin)) / $this->nbrYSticks) * $this->yStick;
387}
388
389function GetNbrSticks()
390{
391        return $this->nbrSticks;
392}
393
394function DrawBarcode($cb, $x,$y, $w,$h, $type='')
395{
396        $type = strToLower($type);
397        $len = strlen($cb);
398
399        // calcule la largeur du code barre en pixels
400        switch ($type)
401        {
402                case 'c128a' :
403                case 'c128b' :
404                case 'c128c' :
405                        $width = (35 + $len*11)*$this->cbXRes;
406                        break;
407                case 'i25' :
408                        $width = (8 + $len*7)*$this->cbXRes;
409                        break;
410                case 'c39' :
411                default :
412                        $width = (($len+2)*12 + $len+1)*$this->cbXRes;
413                        break;
414        }
415        // calcule la hauteur en pixels à partir de la largeur
416        $height = ($width * $h) / $w;
417
418        // crée le code barre
419        switch ($type)
420        {
421                case 'c128a' :
422                        $cbi = new C128AObject($width, $height, $this->cbStyle, "$cb");
423                        break;
424                case 'c128b' :
425                        $cbi = new C128BObject($width, $height, $this->cbStyle, "$cb");
426                        break;
427                case 'c128c' :
428                        $cbi = new C128CObject($width, $height, $this->cbStyle, "$cb");
429                        break;
430                case 'i25' :
431                        $cbi = new I25Object($width, $height, $this->cbStyle, "$cb");
432                        break;
433                case 'c39' :
434                default :
435                        $cbi = new C39Object($width, $height, $this->cbStyle, "$cb");
436                        break;
437        }
438
439        // dessine et incorpore au pdf.
440        $cbi->SetFont($this->cbFontSize);
441        $cbi->DrawObject($this->cbXRes);
442        $filename = FPDF_CB_TEMPPATH."cb".time().$cb;
443        $cbi->SaveTo($filename);
444        $cbi->DestroyObject();
445        $this->Image($filename, $x, $y, $w, $h, "png");
446        unlink($filename);
447}
448
449} // fin de la classe FPDF_Etiquette
450
451} // fin de définition de FPDF_ETIQUETTE_CLASS
452
Note: See TracBrowser for help on using the repository browser.