Créez vos cartes de visite avec FPDF et ClasseForms

, par  Yann , popularité : 3%

Créez vos cartes de visite avec FPDF et ClasseForms

Cette petite application a été réalisée avec FPDF et la classe "classeForms" de Franck Oberlechner.

Astuce remplacement ereg_replace (deprecated) par preg_replace

$this->popup_content =  preg_replace("/[\n,\x0A,\x0D,\x0C]/","",$params['content']);
//$this->popup_content =  ereg_replace("\n|\x0A|\x0D|\x0C","",$params['content']);

Code source de l’application

Code source sans Popup
Code source avec Popup

Test de l’application :

Test de l’application

codes sources

Script carte_visite.php

<?php
	session_start();
	include("include/classeForms.php");
	include("include/classePopup.php"); 
	
	$f = New Forms;
	$f->frm_Init(false,"250px");
	//$f->frm_Protection();
	definition_des_champs();
	$ret = $f->frm_Aiguiller();

	switch ( $ret ) {
	// MODIF 1ER APPEL 	#############################################################
	case "A0" :
		$generation = 0;
		$f->frm_LibBoutons("Générer PDF","Quitter","Rétablir");
	break;

	// MODIF RE-ENTRANT #############################################################
	case "A1" :
		$generation = 1;
		$f->frm_ChampsRecopier();
		$f->frm_LibBoutons("Générer PDF","Quitter","Rétablir");
	break;

	default:
		header('location: carte_visite.php');
	break;

}

//include("theme_inc.php");
$f->frm_InitPalette(4);
$f->frm_ActiverBtnValider();
//appliquer_theme_sans_menu(4);
?>

<html>
<head>
<title>Configuration de la génération de la carte de visite</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="shortcut icon" href="fpdfcvisite.ico">
<link href="css/style.css" rel="stylesheet" type="text/css">

</head>
<body > 
<br>
<blockquote>
<?php
	print "<span class=titre1>Génération de cartes de visite</span>";
	$f->frm_Ouvrir();
	$pw = New PopupWindows; //	création d'un nouvel objet "fenetre"
	$pw->popup_cascade(600,50,25); //permet de fixer la position du postit
	$pw->popup_skin(5);	//force le theme de couleurs
	$pw->popup_style(1); // force le style
	$pw->popup_new( array(	'title' => "Conseil : Format des images",
								'content' => "Le logo doit être une image <b>carrée</b> : dimension conseillée <b>120x120 pixels</b><br>
								L'image de fond doit être <b>rectangulaire</b> pour éviter les déformations (ratio L/H=1.63) : dimension conseillée <b>900x550 pixels</b>",
								'status' => "pour l'onglet Génération de carte",
								 ),
						array());
	$pw2 = New PopupWindows; //	création d'un nouvel objet "fenetre"
	$pw2->popup_cascade(600,210,25);
	$pw2->popup_skin(0);	//force le theme de couleurs
	$pw2->popup_style(1); // force le style
	$pw2->popup_new( array(	'title' => "Attention!!!",
				'content' => "<b>L'utilisation des images ralentit considérablement la génération des cartes de visites. Ne soyez pas surpris!</b>",
				'status' => "PHP est lent!",
				 ),
			array());
	$f->frm_Fermer();
	
	if ($generation == 1)
		creation_carte();
?>
</blockquote>
</body>
</html>
<?php 
function creation_carte()
{
	define("FPDF_FONTPATH","fpdf/font/");
	require("fpdf/fpdf.php");
	require_once("fpdf/PDF_CVisite.php");

	$prenom = utf8_decode($_POST["PRENOM"]);
	$nom = utf8_decode($_POST["NOM"]);
	$profession1 = utf8_decode($_POST["PROFESSION_1"]);
	$profession2 = utf8_decode($_POST["PROFESSION_2"]);
	$adresse = utf8_decode($_POST["ADRESSE"]);
	$codepostal = utf8_decode($_POST["CP"]);
	$ville = utf8_decode($_POST["VILLE"]);
	$telephone = utf8_decode($_POST["TELEPHONE"]);
	$portable = utf8_decode($_POST["PORTABLE"]);
	$fax = utf8_decode($_POST["FAX"]);
	$mail = utf8_decode($_POST["EMAIL"]);
	$web = utf8_decode($_POST["WEB"]);

	$nb_carte = $_POST["NB_CARTE_VISITE"];
	$coupe_on = $_POST["TRAIT_COUPE_ON"];
	$largeur_coupe = $_POST["LARGEUR_TRAIT_COUPE"];
	$entourage_on = $_POST["ENTOURAGE_CARTE_ON"];
	$type_entourage = $_POST["TYPE_ENTOURAGE"];
	$logo_on = 	$_POST["LOGO_ON"];
	$file_logo = $_POST["LOGO"];
	$img_fond_on = $_POST["IMG_FOND_ON"];		
	$img_fond_transparence = 1-($_POST["IMG_FOND_TRANSPARENCE"]/100);
	$file_img_fond = $_POST["IMG_FOND"];

	$pdf = new PDF_CVisite(array(	'name'=>'cvisite',	
		'paper-size'=>'A4',
		'metric'=>'mm',
		'marginLeft'=>10, 	//marge superieure
		'marginTop'=>10,	//marge inférieure
 		'NX'=>2,			//nombre de colonne
		'NY'=>5,			//nombre de ligne
		'SpaceX'=>0,		//espace horiz entre les cartes
		'SpaceY'=>0,		//epsace vert entre les cartes
		'width'=>90,		//largeur de la carte
		'height'=>55,		//hauteur de la carte
		'font-size'=>9),	//taille par défaut de la police
		 'mm', 1, 1);		//1,1 veut dire que l'on commence à) générer les cartes de la première lignes première colonnes

	$pdf->Open();
	// On imprime les étiquettes
	for($i=1;$i<=$nb_carte;$i++)
	if ($profession2 != "")
	{
	$pdf->Add_PDF_CVisite("<nom>".$prenom." ".$nom."</nom>
<prof>".$profession1."</prof>
<prof>".$profession2."</prof>
<adr>".$adresse."
".$codepostal." ".$ville."</adr>",$telephone,$fax,$portable,$mail,$web,$coupe_on,$largeur_coupe,$entourage_on,$type_entourage,$img_fond_on,$file_img_fond,$img_fond_transparence,$logo_on,$file_logo);
	}
	else
	{
$pdf->Add_PDF_CVisite("<nom>".$prenom." ".$nom."</nom>
<prof>".$profession1."</prof>
<adr>".$adresse."
".$codepostal." ".$ville."</adr>",$telephone,$fax,$portable,$mail,$web,$coupe_on,$largeur_coupe,$entourage_on,$type_entourage,$img_fond_on,$file_img_fond,$img_fond_transparence,$logo_on,$file_logo);
	}
	$pdf->Close();
	$filename = utf8_encode($prenom)."_".utf8_encode($nom)."_".sprintf("%05s", mt_rand(1,99999))."_carte_visite.pdf";
	$pdf->Output("pdfs/".$filename,"F");
	$url = "pdfs/".$filename;
	
	
		print "<br>
		<table width=\"525px\">
		<tr><td>
		<center>
		<span class=titre1><a href=\"".$url."\" target=\"_new\">Téléchargez votre carte de visite</a></span></center>
		</td></tr></table>";
}

// SECTION DE DEFINITION DES OBJETS CHAMPS
function definition_des_champs() {
	global $f;
	// ATTENTION NE PAS OUBLIER DE "GLOBALISER" TOUTES LES VARIABLES NECESSAIRES A CETTE FONCTION
	
	$tableau_nb_carte = array(	"1" => "1",
							"10" => "10", 
							"20" => "20", 
							"30" => "30",
							"40" => "40",
							"50" => "50");

	$tableau_entourage = array(	"carre" => "Coins carré", 
							"rond" => "Coins arrondis");


	$tableau_trait_coupe = array(	"1" => "1",
							"2" => "2", 
							"3" => "3",
							"4" => "4",
							"5" => "5");



	//Definition d'un onglet
	$f->frm_OngletDefinir( array("width" => "525px", "height" => "470px","default" => "Paramètres Personnels" ) );

		
	///////////////////////////////////////////////////////////////////////
	///// ONGLET PERE /////////////////////////////////////////////////////
	///////////////////////////////////////////////////////////////////////
	$f->frm_SautLignes();
	$f->frm_OngletNouveau('Paramètres Personnels');
	$f->frm_SautLignes();

	$f->frm_ObjetChampTexte("PRENOM", array( "label" => "Prénom",
											 "width"  => "250px",
						                                         "attrib" => "R",
											 "default" => "Jean",
											 "help" => "Saisir votre prénom")
											 );

	$f->frm_ObjetChampTexte("NOM", array( "label" => "Nom",
											 "width"  => "250px",
	                                         					"attrib" => "R",
											 "default" => "Dupond",
											 "help" => "Saisir votre nom")
											 );

	$f->frm_ObjetChampTexte("PROFESSION_1", array( "label" => "Profession",
											 "width"  => "250px",
	                                         					"attrib" => "R",
											 "default" => "Votre profession",
											 "help" => "Saisir votre profession")
											 );
	$f->frm_ObjetChampTexte("PROFESSION_2", array( "label" => "",
											 "width"  => "250px",
	                                         					//"attrib" => "U",
											 "default" => "",
											 "help" => "Saisir votre profession")
											 );
	$f->frm_SautLignes();

	$f->frm_ObjetChampTexte("ADRESSE", array( "label" => "Adresse",
											 "width"  => "250px",
	                                         					"attrib" => "R",
											 "default" => "Adresse",
											 "help" => "Saisir votre adresse")
											 );

	$f->frm_ObjetChampTexte("CP", array( "label" => "Code Postal",
											 "width"  => "80px",
	                                         					"attrib" => "R",
											 "default" => "57000",
											 "mask" => "F#####",
											 "help" => "Saisir votre code postal")
											 );

	$f->frm_ObjetChampTexte("VILLE", array( "label" => "Ville",
	                                         					"attrib" => "R",
											 "default" => "METZ",
											 "help" => "Saisir la ville de la Garderie")
											 );

	$f->frm_SautLignes();

	$f->frm_ObjetChampTexte("TELEPHONE",   
									array( "attrib" => "R",
									       "label"  => "Téléphone",
									       "width"  => "100px",
									       "help"   => "Téléphone",
									       "default" => "01.02.03.04.05",
										   "mask"   => "##.##.##.##.##")
										);

	$f->frm_ObjetChampTexte("PORTABLE",   
									array( "attrib" => "U",
									       "label"  => "Portable",
									       "width"  => "100px",
									       "help"   => "Portable",
									       "default" => "06.07.08.09.10",
										   "mask"   => "##.##.##.##.##")
										);


	$f->frm_ObjetChampTexte("FAX",   
									array( "attrib" => "U",
									       "label"  => "Fax",
									       "width"  => "100px",
									       "help"   => "Fax",
										   "mask"   => "##.##.##.##.##")
										);

	$f->frm_ObjetChampTexte("EMAIL",   
									array( "attrib" => "M",
									       "label"  => "Email",
									       "width"  => "275px",
									       "help"   => "Email",)
										);

	$f->frm_ObjetChampTexte("WEB",   
									array( "attrib" => "L",
									       "label"  => "Site Web",
									       "width"  => "275",
									       "help"   => "Site web ",)
										);
				
	$f->frm_OngletNouveau('Génération carte de visite');


	$f->frm_ObjetListe("NB_CARTE_VISITE",   
									array( "attrib"  => "R",
										   "title"	=> "-- Choisir un nombre --",
									       "label"   => "Nombre de cartes (10 par pages)",
									       "default" => "1",
									       "help"    => "Choisir le nombre de cartes",
									       "width"   => "100px",)
									, $tableau_nb_carte
									);
	// DEFINITION D'UN CHAMP CASE A COCHER
	$f->frm_ObjetCoche("TRAIT_COUPE_ON",   
									array( "label"    => "Afficher les traits de découpe",
									       "title"    => "Oui/Non",
									       "default"  => "1",
									       "help"     => "Cocher pour Oui, Décocher pour Non",
									       "valueon"  => "1",
									       "valueoff" => "0",
										"activation" => array("LARGEUR_TRAIT_COUPE") )
									);
	$f->frm_ObjetListe("LARGEUR_TRAIT_COUPE",   
									array( "attrib"  => "",
										   "title"	=> "-- Choisir un nombre --",
									       "label"   => "Largeur du trait de coupe en mm",
									       "default" => "1",
									       "help"    => "Choisir la largeur du trait de coupe",
									       "width"   => "100px",)
									, $tableau_trait_coupe
									);

	$f->frm_SautLignes();

	// DEFINITION D'UN CHAMP CASE A COCHER
	$f->frm_ObjetCoche("ENTOURAGE_CARTE_ON",   
									array( "label"    => "Afficher le contour de la carte",
									       "title"    => "Oui/Non",
									       "default"  => "1",
									       "help"     => "Cocher pour Oui, Décocher pour Non",
									       "valueon"  => "1",
									       "valueoff" => "0",
										   "activation" => array("TYPE_ENTOURAGE") )
									);
	$f->frm_ObjetListe("TYPE_ENTOURAGE",   
									array( "attrib"  => "",
										   "title"	=> "-- Choisir un nombre --",
									       "label"   => "Type de contour",
									       "default" => "carre",
									       "help"    => "Choisir le type de tour",
									       "width"   => "100px",)
									, $tableau_entourage
									);

	$f->frm_SautLignes();

	// DEFINITION D'UN CHAMP CASE A COCHER
	$f->frm_ObjetCoche("LOGO_ON",   
									array( "label"    => "Afficher le logo sur la carte de visite",
									       "title"    => "Oui/Non",
									       "default"  => "1",
									       "help"     => "Cocher pour Oui, Décocher pour Non",
									       "valueon"  => "1",
									       "valueoff" => "0",
   										   "activation" => array("LOGO") )
										);


	// DEFINITION D'UN CHAMP SELECTEUR D'ICONES
	$f->frm_ObjetChampIcone("LOGO",   
									array( "label"     => "Sélectionnez le logo de la carte de visite",
									       "winwidth"  => "800",
									       "winheight" => "600",
										   "width" => "64",
										   "height" => "64",
									       "url"       => "icones_popup.php",
									       "path"      => "logos/",
									       "default"   => "logos/cliquer2.png",
										   "help"   => "Sélectionnez une image png")
										);
								
	 $f->frm_ObjetUploader("UPLOAD_LOGO_CARTE",       array(
										"attrib" => "",
										"label" => "Télécharger une photo/image",
										"url" => "upload_logo_called.php",
										"default" => "",
										"title" => "Télécharger une photo",
										"extensions" => "GIF|PNG|JPG|JPEG",
										"overwrite" => true,
//										"delete" => true,
										"filter" => true,
										"prefix" => "logo_".sprintf("%05s", mt_rand(1,99999)).'_',
//										"multifiles" => true,
//										"multifilesmax" => -1,
										"target" => 'logos/',
										"preview" => true,
										"help" => "Télécharger des photos/images",
										"width" => "150px",
										"size" => "4" )
										  );

	// DEFINITION D'UN CHAMP CASE A COCHER
	$f->frm_ObjetCoche("IMG_FOND_ON",   		array( "label"    => "Afficher l'image de fond sur la carte de visite",
									       "title"    => "Oui/Non",
									       "default"  => "1",
									       "help"     => "Cocher pour Oui, Décocher pour Non",
									       "valueon"  => "1",
									       "valueoff" => "0",
   										"activation" => array("IMG_FOND_TRANSPARENCE","IMG_FOND") )
										);

	$f->frm_ObjetSlider("IMG_FOND_TRANSPARENCE",	array(	"label" => "Transparence image de fond en % ",
									"orientation" => "H",
									"width" => "150px",
									"mini"=> "0",
									"maxi"=>"100",
									"default" => "0",
									"size" => "3",
									"help" => "choisir la transparence de l'image de fond")
									);

	// DEFINITION D'UN CHAMP SELECTEUR D'ICONES
	$f->frm_ObjetChampIcone("IMG_FOND",   array( "label"     => "Sélectionnez l'image du fond de la carte de visite",
									       "winwidth"  => "800",
									       "winheight" => "600",
										"width" => "64",
										"height" => "64",
									       "url"       => "icones_popup.php",
									       "path"      => "images/",
									       "default"   => "images/cliquer2.png",
										   "help"   => "Sélectionnez une image png")
										);
	 $f->frm_ObjetUploader("UPLOAD_IMAGE_CARTE",       array(
										"attrib" => "",
										"label" => "Télécharger une photo/image",
										"url" => "upload_image_called.php",
										"default" => "",
										"title" => "Télécharger une photo",
										"extensions" => "GIF|PNG|JPG|JPEG",
										"overwrite" => true,
//										"delete" => true,
										"filter" => true,
										"prefix" => "image_".sprintf("%05s", mt_rand(1,99999)).'_',
//										"multifiles" => true,
//										"multifilesmax" => -1,
										"target" => 'images/',
										"preview" => true,
										"help" => "Télécharger des photos/images",
										"width" => "150px",
										"size" => "4" )
										  );

	}
?>

Script icones_popup.php

<html>
<head>
<title>Choisir une icone</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="shortcut icon" href="fpdfcvisite.ico">
<link href="css/style.css" rel="stylesheet" type="text/css">
</head>
<BODY> 
<?php
	include('include/classeForms.php');		
	$f = New Forms;
    $f->frm_Init();
	$f->frm_icone_popup_called();
	$f->frm_InitPalette(4);
?>
</body>
</html>

Script upload_image_called.php

<html>
<head>
<title>Choisir une photo/image</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="shortcut icon" href="fpdfcvisite.ico">
<link href="css/style.css" rel="stylesheet" type="text/css">
</head>
<BODY> 
<?php
	include('include/classeForms.php');		
	$f = New Forms;

    $f->frm_Init();
	$f->frm_InitPalette(4);

	$f->frm_uploader( array(	'target'      => 'images/',
								'maxfilesize' => 2048*1024,
								'delete'      => true,
								'space'       => '_',
								'filter'      => true,
								"extensions" => "GIF|PNG|JPG|JPEG",
//								'overwrite' => true,
//								'width' => '150px',
							) 
					 );
?>
</body>
</html>

Script upload_logo_called.php

<html>
<head>
<title>Choisir une photo/image</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="shortcut icon" href="fpdfcvisite.ico">
<link href="css/style.css" rel="stylesheet" type="text/css">
</head>
<BODY> 
<?php
	include('include/classeForms.php');		
	$f = New Forms;

    $f->frm_Init();
	$f->frm_InitPalette(4);

	$f->frm_uploader( array(	'target'      => 'logos/',
								'maxfilesize' => 2048*1024,
								'delete'      => true,
								'space'       => '_',
								'filter'      => true,
								"extensions" => "GIF|PNG|JPG|JPEG",
//								'overwrite' => true,
//								'width' => '150px',
							) 
					 );
?>
</body>
</html>