2017-07-06 6 views
1

Je fais une forme que l'utilisateur remplit pour créer une signature de mail:Comment utiliser correctement imagettftext?

generatarjeta.php

if(isset($_GET["suc"]) && $_GET["suc"] !="") 
{ $code=""; 
    foreach($_GET as $key => $value){ 
    $code.= $key . "=" . $value . "&"; 
    } 
    $code = rtrim($code,"&"); 
    ?> 
    <img src="imagem.php?<?php echo $code;?>"> 
    <script>window.history.pushState("", "", '/generatarjeta.php');</script> 
    <?php exit(); 
} 

<form method="get"> 
     <table> 
     <tr><td><label>Sucursal</label></td><td><select name="suc"> 
      <option value="">Seleccione...</option> 
      <?php 
      $con_sucursal = mssql_query("select * from localitos where local NOT IN (3,5, 7,12, 13, 14,15,16,17,19, 20, 21, 22,23,24,25,26,27)"); 
      while ($res_sucursal = mssql_fetch_array($con_sucursal)) 
      { 
      echo "<option value='$res_sucursal[0]'>$res_sucursal[1]</option>"; 
      }?> 
     </select></td></tr> 
     <tr><td><label>Nombre del Trabajador: </label></td><td><input type="text" name="nombre" required="" onkeypress="return textonly(event);"/></td></tr> 
     <tr><td><label>Puesto: </label></td><td><input type="text" name="puesto" required="" onkeypress="return textonly(event);"/></td></tr> 
     <tr><td><label>Telefono: </label></td><td><input type="text" name="tel" required="" onkeypress='return solonums(event)'/>&nbsp;<label>Extension: </label><input type="text" name="ext" onkeypress='return solonums(event)'/></td></tr> 
     <tr><td><label>correo: </label></td><td><input type="text" name="mail" placeholder="nombre.apellido"/></td></tr> 
     <tr><td><input type="submit" name="submit" value="Generar"/></td><td><input type="reset"/></td></tr> 
     </table> 
    </form> 

imagem.php

//Carregar imagem 
$rImg = ImageCreateFromJPEG("the_firma.jpg"); 
//Definir cor 
$cor = imagecolorallocate($rImg, 226, 41, 34); 
$cor2 = imagecolorallocate($rImg, 60, 60, 59); 

$tel = "$_GET[tel] Ext. $_GET[ext]"; 
$correo = "$_GET[mail]@mail.x"; 
//Escrever nome 
imagettftext($rImg,14,0,850,60,$cor,'Open Sans',$_GET["nombre"]); 
//imagestring($rImg,5,850,60,urldecode($_GET["nombre"]),$cor); 
//imagestring($rImg,5,850,80,urldecode($_GET["puesto"]),$cor2); 
//imagestring($rImg,5,800,120,urldecode($tel),$cor2); 
//imagestring($rImg,5,800,140,urldecode($correo),$cor2); 
//Header e output 
header('Content-type: image/jpeg'); 
imagejpeg($rImg,NULL,100); 

Ma question est, quand j'utilise imagestring , tout fonctionne bien, mais je dois utiliser Open Sans ttf donc j'ai essayé d'utiliser imagettftext, mais il "écho" un résultat vide ou une erreur lors du chargement img src et aussi lors du test de fichier séparément, il ne montre aucune erreur.

Des suggestions?

MISE À JOUR:

$tel = "$_GET[tel] Ext. $_GET[ext]"; 
$correo = "$_GET[mail]@mail.mx"; 
$puesto = strtoupper($_GET["puesto"]); 


imagettftext($rImg, 14, 0, 780,60, $cor, 'OpenSans-Bold.ttf', $_GET['nombre']); (WORKS) 
imagettftext($rImg, 8, 0, 780,80, $cor2, 'OpenSans-Regular.ttf', $puesto); (WORKS) 
imagettftext($rImg,9,780,135,$cor2, 'OpenSans-Regular.ttf',urldecode($_GET["tel"])); (CRASHES) 
imagettftext($rImg,9,780,172,$cor2,'OpenSans-Regular.ttf',$correo);(CRASHES) 
imagettftext($rImg,8,780,209,$cor2,'OpenSans-Regular.ttf',$_GET["direccion"]);(CRASHES) 
imagettftext($rImg,8,780,223,$cor2,'OpenSans-Regular.ttf',$_GET["dir2"]);(CRASHES) 
+0

Il semble correct pour moi. Etes-vous sûr que vos variables sont correctes? Avez-vous essayé de var_dump (urldecode ($ correo)) ;? – Andreas

+0

$ correo fonctionne correctement avec imagestring, pas avec imagettftext – Rhopercy

Répondre

0

Comme documented, le paramètre $fontfile a besoin d'un chemin au fichier de police, pas son nom d'affichage:

Le chemin vers la police TrueType que vous souhaitez utiliser.

La solution la plus simple est de mettre le fichier .ttf (opensans.ttf?) Dans le même dossier que votre script, puis changer votre appel de fonction comme ceci:

imagettftext($rImg, 14, 0, 850, 60, $cor, 'opensans.ttf', $_GET['nombre']); 
+0

Alors le nom du ttf devrait être open_sans.ttf? – Rhopercy

+1

Je ne sais pas quel est le nom du fichier que vous avez. Vous devrez vérifier cela vous-même. Sur mon système, la police régulière est 'OpenSans-Regular.ttf'. – timclutton

+0

Eh bien cela fonctionne comme vous l'avez dit, mais quand j'envoie un paramètre avec des chiffres, il se bloque peut-être mon sintax je vais modifier avec une partie de votre code – Rhopercy