Couleurs avec FDPF
Posté : 09 juil. 2005, 14:31
Permettre l'utilisation de couleurs hexadécimales
Afin de permettre l'utilisation de couleurs hexadécimales dans la classe de génération de fichiers pdf FPDF, voici deux fonctions privées supplémentaires pour transformer cette couleur en chaine rgb du type rgb(255,255,255):
La première découpe la chaîne du type #aabbcc en trois variables $r, $v, et $b
Première fonction : hex2rgb():
Afin de permettre l'utilisation de couleurs hexadécimales dans la classe de génération de fichiers pdf FPDF, voici deux fonctions privées supplémentaires pour transformer cette couleur en chaine rgb du type rgb(255,255,255):
La première découpe la chaîne du type #aabbcc en trois variables $r, $v, et $b
Première fonction : hex2rgb():
/**
* Conversion d'une couleur hexadécimale en couleur rgb
*
* Transforme une chaine hexadécimale d'une couleur du type #336699 en chaine de type
* rgb(51,102,153) et retourne la chaîne "51,102,153"
*
* @param String $couleur Couleur hexadécimale
* @return String Couleur rgb
* @access private
* @version 1.5
*/
function hex2rgb($couleur)
{
/* On isole chaque caractère de la chaine hexadécimale par couleur */
$r = substr($couleur, 1, 2);
$v = substr($couleur, 3, 2);
$b = substr($couleur, 5, 2);
/* On récupère une valeur décimale */
$rouge = hexdec($r);
$vert = hexdec($v);
$bleu = hexdec($b);
/* On reconstruit la chaine en valeur rgb. */
return ($rouge.",".$vert.",".$bleu);
}
Afin de pouvoir utiliser cette option, une petite modification, ou plutôt un ajout est nécessaire dans trois méthodes, à savoir FPDF::SetDrawColor(), FPDF::SetFillColor() et FPDF::SetTextColor() avec un test en début de méthode:
if(eregi("^\#[a-f0-9]{6}$",$r) && $g == -1 && $b == -1)
{
/* On prendra soin de mettre les caractères en minuscule */
$coul_rbg = explode(",", $this->hex2rgb(strtolower($r)));
$r = $coul_rbg[0];
$g = $coul_rbg[1];
$b = $coul_rbg[2];
}
Voilà, il vous reste à tester ça si vous en avez l'utilité