J'ai imaginé de créer un fichier .vcf d'Outlook en automatique : sans succès (et pourtant j'ai bien généré exactement).
De toute façon, c'est moche et pas si utile : d'autant que je ne veux pas fournir au public des infos sensées être dans l'annuaire interne.
Bref l'image est plus simple, plus smart, plus jolie, mais il faut que le destinataire créé manuellement sa fiche.
Ma méthode : (C'est cadeau, à adapter ...)
serveur debian : LAMP + PHP + GD2 + TTF (true-type) + qq lib à trouver ...
image de base : card.jpg (dimension 329x180)
police (.ttf) : à mettre dans le répertoire, pour moi c'est 'vera' (normal+gras+italique+italique/gras)
fichier index.php : formulaire
- Code : Tout sélectionner
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
<title>Création de carte de visite pour la signature des emails</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Générateur de carte de visite pour la signature des emails</h1>
<hr/>
<?php
if (isset($_POST["generer"])) {
$generer=1;
$Zsite=htmlspecialchars($_POST["site"]);
$Znom=htmlspecialchars($_POST["nom"]);
$Zprenom=htmlspecialchars($_POST["prenom"]);
$Zfonction=htmlspecialchars($_POST["fonction"]);
$Zportable=htmlspecialchars($_POST["portable"]);
$Ztelephone=htmlspecialchars($_POST["telephone"]);
else {
$generer=0;
$Zsite="xx"; $Znom=""; $Zprenom=""; $Zfonction=""; $Zportable=""; $Ztelephone=""; }
print "<form id='formulaire' action='index.php' method='post'>\n";
print "\n";
print "<table>\n";
print "<tr><td>Site : </td><td>";
print "<input type='radio' name='site' value='xx'" . (($Zsite=="xx") ? " checked " : "") . ">Xxxxxxxx</input>";
print "<input type='radio' name='site' value='yy'" . (($Zsite=="yy") ? " checked " : "") . ">Yyyyyyyyy</input>";
print "</td></tr>\n";
print "<tr><td>Nom : </td><td><input type='text' size='30' name='nom' id='nom' value='$Znom'/></td></tr>\n";
print "<tr><td>Prénom : </td><td><input type='text' size='30' name='prenom' id='prenom' value='" . $Zprenom . "'/></td></tr>\n";
print "<tr><td>Fonction : </td><td><input type='text' size='30' name='fonction' id='fonction' value='" . $Zfonction . "'/></td></tr>\n";
print "<tr><td>Téléphone : </td><td><input type='text' size='30' name='telephone' id='telephone' value='" . $Ztelephone . "'/></td></tr>\n";
print "<tr><td>Portable : </td><td><input type='text' size='30' name='portable' id='portable' value='" . $Zportable . "'/></td></tr>\n";
print "<tr><td colspan=2><input type='submit' name='generer' id='generer' value='Generer' /></td></tr>\n";
print "</table>\n";
print "\n";
print "</form>\n";
if ($generer==1) {
print "<br>\n";
$que = array('nom'=>$Znom, 'prenom'=>$Zprenom, 'fonction'=>$Zfonction, 'portable'=>$Zportable,
'telephone'=>$Ztelephone, 'site'=>$Zsite);
print "<img src='image.php?" . http_build_query($que) . "'>";
}
?>
</body>
</html>
fichier image.php : génération image (à adapter ...)
- Code : Tout sélectionner
<?php
header("Content-type: image/jpeg");
$site = html_entity_decode($_GET['site']);
$nom = html_entity_decode($_GET['nom']);
$prenom = html_entity_decode($_GET['prenom']);
$fonction = html_entity_decode($_GET['fonction']);
$portable = html_entity_decode($_GET['portable']);
$telephone = html_entity_decode($_GET['telephone']);
$im = imagecreatefromjpeg("card.jpg");
imagealphablending($im, true);
$black = imagecolorallocate($im, 0, 0, 0);
putenv('GDFONTPATH=' . realpath('.'));
$font = 'vera'; //normal
$fontb = 'verabd'; //gras
$fonti = 'verit'; //ital
$fontbi = 'verabi'; //ital+gras
$pol1 = 11; // grand
$pol2 = 9.5; // petit
$col = 0; // colonne des textes
$lig = 15; // ligne des textes
$lig=15; imagettftext($im, $pol1, 0, $col, $lig, $black, $fontb, $prenom . " " . $nom);
$lig=38; imagettftext($im, $pol2, 0, $col, $lig, $black, $font, $fonction);
$lig=56; imagettftext($im, $pol2, 0, $col, $lig, $black, $fontb, "MA STE");
// telephone / portable ... et variantes
if ($telephone!="" and $portable!="") { $tel = "Tél. " . $telephone . " / " . $portable; }
if ($telephone!="" and $portable=="") { $tel = "Tél. " . $telephone; }
if ($telephone=="" and $portable!="") { $tel = "Tél. " . $portable; }
if ($telephone=="" and $portable=="") { $tel = ""; }
$lig=85; imagettftext($im, $pol2, 0, $col, $lig, $black, $font, $tel);
$adr = "";
if ($site=="xx") { $adr = "1 rue des acacias 75000 PARIS"; }
if ($site=="yy") { $adr = "2 rue des glycines 33000 BORDEAUX"; }
$lig=103; imagettftext($im, $pol2, 0, $col, $lig, $black, $font, $adr);
imagejpeg($im);
imagedestroy($im);
?>
Mettre en place m'a demandé 1 ou 2 journées de boulot ... mais le plus dur est de convaincre et mettre d'accord !
L'intelligence artificielle n'est rien à côté de la stupidité naturelle.