La classe PHP "Label"
La classe abstraite PHP "Label" est une classe qui hérite de la classe PHP TCPDF qui permet de créer des fichiers PDF. Elle a donc exactement les mêmes propriétés, je vous renvoie aux exemples et à la documentation de TCPDF pour toute manipulation de l'objet PDF.
Fonctionnement
"Label" applique un modèle (gabarit / template) à un format définit par le fichier labels.xml sur une page PDF.
Nous avons 4 objets :
- Le package TCPDF qui génère du PDF et les codes barres
- Le fichier labels.xml dans lequel est paramétré le format des étiquettes et/ou des planches .
- Le fichier class.label.php qui va créer la structure PDF à partir du fichier labels.xml.
- Le fichier class.labelExemple.php qui s'occupe du design de l'étiquette
Pour cela nous devons réaliser 3 choses :
- Paramétrer le fichier labels.xml.
- Récupérer / générer les données servant à créer le template (exemple : création d'un formulaire).
- Créer une classe surchargeant la classe
label
et implémenter la méthodetemplate()
.
Exemple
Les données ou paramètres qui servent à la constitution d'une étiquette sont stockées dans un tableau de données (array). Voici un exemple de structure de tableau de données $data
:
Array
(
[0] => Array
(
[typeCAB] => C128B
[cab] => 012845888852
)
[1] => Array
(
[typeCAB] => C128B
[cab] => 012845888852
)
[2] => Array
(
[typeCAB] => C128B
[cab] => 012845888852
)
)
Commençons le script d'exemple. Il nous faut tout d'abord importer les classes tcpdf
, label
et labelExemple
(classe héritant de label
et implémentant la méthode template()
).
<?php
define('CLASS_PATH','class/');
require_once(CLASS_PATH.'tcpdf/config/lang/eng.php');
require_once(CLASS_PATH.'tcpdf/tcpdf.php');
require_once(CLASS_PATH."label/class.label.php");
require_once(CLASS_PATH."label/class.labelExemple.php");
...
Ensuite nous allons créer un tableau à deux dimensions qui dont les données utilisées par le template.
...
// Déclaration du tableau $data et de $label_id
$data = array();
$label_id = "1";
// On crée notre tableau $info
$info= array (
'typeCAB'=> 'C128B',
'cab' => '012845888852'
);
// On ajoute ($info) à $data autant de fois que l'on veux l'étiquette
for ($i=0; $i < 3; $i++){
array_push($data,$info);
}
...
On crée un objet label
en y passant 4 paramètres :
..
$pdf = new labelExemple( $label_id, $data , CLASS_PATH."label/", "labels.xml", true);
...
Détail des paramètres :
Paramètres | Type | Description | |
---|---|---|---|
$label_id |
string | obligatoire | Identifiant d'un format d'étiquette : attribut |
$data |
array | obligatoire | Tableau de données pour la réalisation du gabarit. Chaque entrée dans le tableau correspond à une étiquette (nombre d'étiquettes = count($data) ). |
$pathConfig |
string | obligatoire | Chemin vers le répertoire ou est situé le fichier de paramétrage label.xml (avec le "/" à la fin). |
$configFile |
string | obligatoire | Nom du fichier de paramétrage (Par défaut : "label.xml" ) |
$border |
boolean | facultatif | Affiche ou non les traits de séparation de chaque étiquette (peut servir au découpage papier) (Par défaut : false). |
Ensuite nous pouvons paramétrer le fichier PDF de la même manière que tous les documents TCPDF.
...
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor("Ludovic RIAUDEL");
$pdf->SetTitle("Etiquettes par kiwi");
$pdf->SetSubject("Création d'étiquettes Code Barre");
$pdf->SetKeywords("TCPDF, PDF, example, test, guide, kiwi");
// remove default header/footer
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
// remove default margin
$pdf->SetHeaderMargin(0);
$pdf->SetFooterMargin(0);
$pdf->SetAutoPageBreak( true, 0);
//set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
...
Une fois que nous avons paramétré le document PDF, nous allons appliquer la méthode privée template()
à chaque étiquette avec la méthode public Addlabel()
.
...
// Création des étiquettes
$pdf->Addlabel();
...
Et pour finir nous créons le document.
...
// Affichage du document dans le navigateur
$pdf->Output("doc.pdf", "I");
...
La méthode template()
Pour créer notre modèle (gabarit / template), nous devons créer une classe surchargeant de la classe label
et implémenter la méthode template()
.
<?php
class labelExemple extends label{
/**
* Template d'impression étiquette
*/
function template($x, $y, $dataPrint){
$x += $this->labelMargin;
$y += $this->labelMargin;
// Etiquette
$aff_border = 0;
$ref_font = max($this->labelWidth, $this->labelHeight);
$des_font = 0.5* min($this->labelWidth, $this->labelHeight);
$this->setX($x);
$this->setY($y, false);
$this->SetFont("helvetica", "BI", 1.2*$des_font);
$this->setX($x);
$this->Cell(0 , 0,"Classe Label",$aff_border,1,'L',0);
$this->SetFont("helvetica", "BI", $des_font);
$this->setX($x);
$this->Cell(0 , 0,"http://cab.madvic.net/",$aff_border,1,'L',0);
$this->setX($x);
$this->Cell(0 , 0,"madvic@gmail.com",$aff_border,1,'L',0);
}
}//End of class labelExemple
?>
Paramètres | Type | Description | |
---|---|---|---|
$x |
int | obligatoire | Coordonnée X des ordonnées du coin en haut à gauche de l'étiquette . |
$y |
int | obligatoire | Coordonnée Y des abcisses du coin en haut à gauche de l'étiquette . |
$dataPrint |
array | obligatoire | Tableau à une dimension relative à l'étiquette. |
Téléchargement
La classe label et ses exemples ou un package comprenant la classe tcpdf sont sur sourceforge :
La classe abstraite PHP "Label" est une classe qui hérite de la classe PHP TCPDF qui permet de créer des fichiers PDF. Elle a donc exactement les mêmes propriétés, je vous renvoie aux exemples et à la documentation de TCPDF pour toute manipulation de l'objet PDF.
Fonctionnement
"Label" applique un modèle (gabarit / template) à un format définit par le fichier labels.xml sur une page PDF.
Nous avons 4 objets :
- Le package TCPDF qui génère du PDF et les codes barres
- Le fichier labels.xml dans lequel est paramétré le format des étiquettes et/ou des planches .
- Le fichier class.label.php qui va créer la structure PDF à partir du fichier labels.xml.
- Le fichier class.labelExemple.php qui s'occupe du design de l'étiquette
Pour cela nous devons réaliser 3 choses :
- Paramétrer le fichier labels.xml.
- Récupérer / générer les données servant à créer le template (exemple : création d'un formulaire).
- Créer une classe surchargeant la classe
label
et implémenter la méthodetemplate()
.
Exemple
Les données ou paramètres qui servent à la constitution d'une étiquette sont stockées dans un tableau de données (array). Voici un exemple de structure de tableau de données $data
:
Array
(
[0] => Array
(
[typeCAB] => C128B
[cab] => 012845888852
)
[1] => Array
(
[typeCAB] => C128B
[cab] => 012845888852
)
[2] => Array
(
[typeCAB] => C128B
[cab] => 012845888852
)
)
Commençons le script d'exemple. Il nous faut tout d'abord importer les classes tcpdf
, label
et labelExemple
(classe héritant de label
et implémentant la méthode template()
).
<?php
define('CLASS_PATH','class/');
require_once(CLASS_PATH.'tcpdf/config/lang/eng.php');
require_once(CLASS_PATH.'tcpdf/tcpdf.php');
require_once(CLASS_PATH."label/class.label.php");
require_once(CLASS_PATH."label/class.labelExemple.php");
...
Ensuite nous allons créer un tableau à deux dimensions qui dont les données utilisées par le template.
...
// Déclaration du tableau $data et de $label_id
$data = array();
$label_id = "1";
// On crée notre tableau $info
$info= array (
'typeCAB'=> 'C128B',
'cab' => '012845888852'
);
// On ajoute ($info) à $data autant de fois que l'on veux l'étiquette
for ($i=0; $i < 3; $i++){
array_push($data,$info);
}
...
On crée un objet label
en y passant 4 paramètres :
..
$pdf = new labelExemple( $label_id, $data , CLASS_PATH."label/", "labels.xml", true);
...
Détail des paramètres :
Paramètres | Type | Description | |
---|---|---|---|
$label_id |
string | obligatoire | Identifiant d'un format d'étiquette : attribut |
$data |
array | obligatoire | Tableau de données pour la réalisation du gabarit. Chaque entrée dans le tableau correspond à une étiquette (nombre d'étiquettes = count($data) ). |
$pathConfig |
string | obligatoire | Chemin vers le répertoire ou est situé le fichier de paramétrage label.xml (avec le "/" à la fin). |
$configFile |
string | obligatoire | Nom du fichier de paramétrage (Par défaut : "label.xml" ) |
$border |
boolean | facultatif | Affiche ou non les traits de séparation de chaque étiquette (peut servir au découpage papier) (Par défaut : false). |
Ensuite nous pouvons paramétrer le fichier PDF de la même manière que tous les documents TCPDF.
...
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor("Ludovic RIAUDEL");
$pdf->SetTitle("Etiquettes par kiwi");
$pdf->SetSubject("Création d'étiquettes Code Barre");
$pdf->SetKeywords("TCPDF, PDF, example, test, guide, kiwi");
// remove default header/footer
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
// remove default margin
$pdf->SetHeaderMargin(0);
$pdf->SetFooterMargin(0);
$pdf->SetAutoPageBreak( true, 0);
//set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
...
Une fois que nous avons paramétré le document PDF, nous allons appliquer la méthode privée template()
à chaque étiquette avec la méthode public Addlabel()
.
...
// Création des étiquettes
$pdf->Addlabel();
...
Et pour finir nous créons le document.
...
// Affichage du document dans le navigateur
$pdf->Output("doc.pdf", "I");
...
La méthode template()
Pour créer notre modèle (gabarit / template), nous devons créer une classe surchargeant de la classe label
et implémenter la méthode template()
.
<?php
class labelExemple extends label{
/**
* Template d'impression étiquette
*/
function template($x, $y, $dataPrint){
$x += $this->labelMargin;
$y += $this->labelMargin;
// Etiquette
$aff_border = 0;
$ref_font = max($this->labelWidth, $this->labelHeight);
$des_font = 0.5* min($this->labelWidth, $this->labelHeight);
$this->setX($x);
$this->setY($y, false);
$this->SetFont("helvetica", "BI", 1.2*$des_font);
$this->setX($x);
$this->Cell(0 , 0,"Classe Label",$aff_border,1,'L',0);
$this->SetFont("helvetica", "BI", $des_font);
$this->setX($x);
$this->Cell(0 , 0,"http://cab.madvic.net/",$aff_border,1,'L',0);
$this->setX($x);
$this->Cell(0 , 0,"madvic@gmail.com",$aff_border,1,'L',0);
}
}//End of class labelExemple
?>
Paramètres | Type | Description | |
---|---|---|---|
$x |
int | obligatoire | Coordonnée X des ordonnées du coin en haut à gauche de l'étiquette . |
$y |
int | obligatoire | Coordonnée Y des abcisses du coin en haut à gauche de l'étiquette . |
$dataPrint |
array | obligatoire | Tableau à une dimension relative à l'étiquette. |
Téléchargement
La classe label et ses exemples ou un package comprenant la classe tcpdf sont sur sourceforge :