IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

fpdf et accents


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut fpdf et accents
    Bonjour,

    Mon ennui du jour est le fait que je veux générer des étiquettes en PDF en utilisant fpdf ... avec difficulté au sujet des accents mal générés dans le pdf produit.

    La base que je lis est bien en utf8, les fichiers utilisés (ex.pdf, PDF_Label.php, fpdf.php) sont bien sauvés en utf8 sans bom.

    Je fais le test sur une seule personne dont le prénom (Marie-Thérèse, habitant Rue des Glaïeuls) comporte donc des accents. et voici le résultat (en PJ) :

    Voici le code du fichier ex.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
     
    <?php session_start();
     
    		//  echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ';
     
    		require('PDF_Label.php');
     
    		//  Faire la connexion à la BDD ... sans caractères envoyés au navigateur avant ...	
    		$my_host = $_SESSION['my_host'];
    		$my_user = $_SESSION['my_user']; 
    		$my_pswd = $_SESSION['my_pswd'];  
    		$my_base = $_SESSION['my_base'];
    		$my_cnx = mysqli_connect($my_host, $my_user, $my_pswd, $my_base); 
     
    		mysqli_query($my_cnx, 'SET NAMES utf8');																	//  19/10/2018  Forçage du jeu de caractères en 'utf8' pour la connection
     
     
    		header('Content-Type: text/html; charset=UTF-8');
    		//  header('Content-Type: text/html; charset=iso-8859-1');
     
    		function affiche_civilite($code_civilite)  {									// celle du code_civilite de la personne
    			if (!empty($code_civilite) and intval($code_civilite) > 0 ) {
    				global $my_cnx;	
    				$ma_requete = "SELECT * FROM civilites WHERE id_civilite = $code_civilite";
    				$resultat = $my_cnx->query ($ma_requete);
    				$ligne = $resultat->fetch_array (MYSQLI_ASSOC);       // une seule ligne retournée et contenant les infos 
    				return $ligne["civilite"];
          }
        }
     
    		/*--------------------------------------------------------------------------------
    		Pour créer l'objet on a 2 manières :
    		soit on donne les valeurs d'un format personnalisé en les passant dans un tableau
    		soit on donne le nom d'un format AVERY
    		--------------------------------------------------------------------------------*/
    		// Exemple avec un format personnalisé
    		//  $pdf = new PDF_Label(array('paper-size'=>'A4', 'metric'=>'mm', 'marginLeft'=>1, 'marginTop'=>1, 'NX'=>2, 'NY'=>7, 'SpaceX'=>0, 'SpaceY'=>0, 'width'=>99, 'height'=>38, 'font-size'=>14));
    		$pdf = new PDF_Label(array('paper-size'=>'A4', 'metric'=>'mm', 'marginLeft'=>4, 'marginTop'=>4, 'NX'=>3, 'NY'=>7, 'SpaceX'=>0, 'SpaceY'=>3, 'width'=>64, 'height'=>38, 'font-size'=>10));
    		// Format standard
    		//  $pdf = new PDF_Label('L7163');						//  2 en largeur
    		//  $pdf = new PDF_Label('L8560');
     
    		$pdf->AddPage();
     
    		// On imprime les étiquettes
     
    		$today = date("H:i:s");
    		$my_sql = "SELECT * FROM personnes WHERE id_personne = 50000";  // ". ORDER BY nom LIMIT 24";
    		$result = mysqli_query($my_cnx, $my_sql) or die ('Erreur ici en 51 : '.mysqli_error($my_cnx) );
    	  $nb = mysqli_num_rows($result);  
    	  //  echo "Il y a ".$nb." personnes dans CETTE liste d'HOSPITALIERS"; echo "<br>"; echo "<br>"; 
    	  while ($ligne = mysqli_fetch_assoc($result) ) { 
        		$ordre++;  
        		$id_personne 		= $ligne['id_personne'];
        		$code_civilite 	= $ligne['code_civilite']; $civilite = affiche_civilite ($ligne['code_civilite']);
        		$prenom 				= $ligne['prenom']; // echo "<br>"; echo "<br>"; echo "prenom : ".$prenom; //  exit;
        		$nom 						= $ligne['nom'];
        		$adresse				= $ligne['adresse'];
        		$adresse_2			= $ligne['adresse_2'];
        		$cp_ville				= $ligne['cp_ville'];
     
        		for($i=1;	$i<=1;	$i++) {
    						$text = sprintf("%s\n%s\n%s\n%s\n%s\n%s\n%s","$civilite $prenom $nom","$adresse", "$adresse_2", "$cp_ville","-----------------------------------------------","Votre id_HV : $id_personne --- $today","   "); 
    						$pdf->Add_Label($text);
    				}
     
     	  }
     
    		$pdf->Output();
     
    		?>

    Je vous remercie de votre aide.

    Bien cordialement 'confiné'
    Maub
    Images attachées Images attachées  

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    sauf erreur, il faut utiliser TFPDF, la version "UTF-8" de FPDF.

  3. #3
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut
    Bonsoir Jérôme,

    Merci beaucoup pour ta réponse très rapide.

    Je t'avoue que je suis perdu dans la mise en place de cette nouvelle librairie.

    Sans difficulté avec les fichiers 'anciens' (ex.pdf, PDF_Label.php, fpdf.php), je n'arrive pas à comprendre comment mettre en place ce que j'avais fait.
    Il ne me manquait que de devoir régler le problème des accents.

    T'est-il possible de me me guider ... au démarrage ?
    ou est-ce possible de modifier (simplement) ce que j'avais fait... et que je t'ai envoyé ?

    Je souhaite simplement réaliser des pages A4 contenat 3 colonnes de 7 rangées d'étiquettes (38mm x 64mm), et lisant les données dans une base mysql et avec PHP7.

    Aurais-tu éventuellement un 'exemple' qui s'en rapprocherait ?

    Ton avis et ton conseil me seront précieux. Je t'en remercie à l'avance.

    Bien cordialement
    Maub

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- Il suffit de suivre le lien que j'ai donné :
    • TFPDF
    • Le lien de téléchargement est en bas de page. Il faut remplacer ton fichier fpdf.php par celui dans l'archive : tfpdf.php


    2- Ensuite, c'est simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    require('tfpdf.php'); // au lieu de ('fpdf.php')
     
    $pdf = new tFPDF(); // au lieu de new FPDF()
    Le reste est quasiment* le même qu'avec FPDF.
    * voire exactement

    3- Pour les étiquettes :
    Je suppose que tu as utilisé ce script.
    Modifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    require_once('tfpdf.php'); // au lieu de ('fpdf.php')
     
    class PDF_Label extends tFPDF { // au lieu de FPDF
    ...
    Dernière modification par Invité ; 09/04/2020 à 09h30.

  5. #5
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut
    Bonjour Jérôme,
    et MERCI pour ta réponse encore très rapide ... et répondant parfaitement à mes questions.

    A bientôt ... pour d'autres sujets !!!

    Merci encore.
    Bien cordialement
    Maub

  6. #6
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut suite aux problèmes des accents
    Bonjour à vous,

    Je reprends un sujet que je n'ai pas réglé... il y a plus d'un an !

    J'avoue que je suis perdu avec les différends conseils reçus.
    Un peu d'historique pour aider à bien situer mon problème ...

    Je faisais part de ma difficulté à imprimer (correctement) les caractères accentués avec la librairie 'PDF_Label.php' que je charge au départ de mon script d'impression d'étiquettes.

    Pour ne pas avoir de caractères 'bizarres' sur les étiquettes, j'ai camouflé le problème en remplaçant tous les caractères accentués par les mêmes ... sans accent. Mais le résultat 'imprimé ' n'est pas top !

    Aussi, je voudrais aujourd'hui 'comprendre' la solution proposée par jreaux62, que je n'ai pas dû bien mettre en place... car l'ayant mal comprise ...

    Il me conseille de :

    1 - Télécharger l'archive TFPDF

    2 - Puis il me demande de remplacer 'mon' fichier 'fpdf.php' par celui qui est dans l'archive 'tfpdf.php'.

    3 - Et enfin, il espère que je me sers du script ' http://www.fpdf.org/fr/script/script29.php' pour réaliser mes étiquettes.



    Au vu de ces conseils, voici mes 'remarques' :

    Pour le 1, : J'ai téléchargé l'archive TFPDF (et l'ai dézippée) dans un nouveau dossier, baptisé 'tfpdf', créé à la racine de mon site.

    Pour le 2, je comprends mal :
    - Le fichier 'fpdf.php' que j'utilise actuellement (et qui ne traduit pas les caractères accentués) est à la racine de mon site. - Dois-je donc aller chercher le fichier 'tfpdf.php' (qui est donc dans mon dossier 'tfpdf' et le mettre à la racine de mon site en le 're'nommant fpdf.php ? donc en écrasant le précédent !!!
    - Là, je comprends mal, car comment instancier $pdf par un 'new tFPDF' alors que ce fichier devrait être renommé (si je suis le conseil) !

    Pour le 3, je pense que j'utilise donc le bon script ('spécial' etiquette PDF)

    Ca me parait simple, mais je suis perdu ... dans le point 2 !

    Je vous joins le script 'utilisé' et vous remercie de me remettre sur les rails de le compréhension (Je suis un Papi de 75 ans !)

    Bien cordialement
    Maub

    Edition_Etiquettes_DISTRIB_HV.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    <?php session_start();
     
    		require('PDF_Label.php');
     
    		//  Faire la connexion à la BDD, avant l'envoi d'infos au header... aucun caractère envoyé au navigateur avant ...	
     
    		include_once ("Param_Bases_HV.php");
     
    		$my_cnx = mysqli_connect($my_host, $my_user, $my_pswd, $my_base); 
     
    		mysqli_query($my_cnx, 'SET NAMES utf8');																	//  19/10/2018  Forçage du jeu de caractères en 'utf8' pour la connection
     
    		header('Content-Type: text/html; charset=UTF-8');
     
    		function affiche_civilite($code_civilite)  {															// celle du code_civilite de la personne
    			if (!empty($code_civilite) and intval($code_civilite) > 0 ) {
    				global $my_cnx;	
    				$ma_requete = "SELECT * FROM civilites WHERE id_civilite = $code_civilite";
    				$resultat = $my_cnx->query ($ma_requete);
    				$ligne = $resultat->fetch_array (MYSQLI_ASSOC);       								// une seule ligne retournée et contenant les infos 
    				return $ligne["civilite"];
          }
        }
     
        function remove_accents($champ) {																				
      			$search  = array('à','á','â','ô','è','é','ê','ë','ç','û','ï');
      			$replace = array('a','a','a','o','e','e','e','e','c','u','i');
      			$champ = str_replace($search,$replace,$champ);
      			return $champ;
      	}  		 					
     
    		/*--------------------------------------------------------------------------------
    		Pour créer l'objet on a 2 manières :
    		soit on donne les valeurs d'un format personnalisé en les passant dans un tableau
    		soit on donne le nom d'un format AVERY
    		--------------------------------------------------------------------------------*/
    		// Exemple avec un format personnalisé
    		//  $pdf = new PDF_Label(array('paper-size'=>'A4', 'metric'=>'mm', 'marginLeft'=>1, 'marginTop'=>1, 'NX'=>2, 'NY'=>7, 'SpaceX'=>0, 'SpaceY'=>0, 'width'=>99, 'height'=>38, 'font-size'=>14));
     
    		//  Perso HVT85.fr    AVERY  L7160 ???     3 x 7 = 21 par 25 feuilles
    		$pdf = new PDF_Label(array('paper-size'=>'A4', 'metric'=>'mm', 'marginLeft'=>10, 'marginTop'=>20, 'NX'=>3, 'NY'=>7, 'SpaceX'=>2, 'SpaceY'=>0, 'width'=>63.5, 'height'=>38, 'font-size'=>9));
    		//																															marge_gauche 4   marge_haut   	 Nb en L  Nb en H		EspaceH     EspaceV      Dim Largeur  Dim Hauteur    Police
    		// Format standard
    		//  $pdf = new PDF_Label('L7160');						//  2 en largeur
    		//  $pdf = new PDF_Label('L8560');
     
    		$pdf->AddPage();
     
    		// On sélectionne et imprime les étiquettes
    		$today = date("H:i:s");
     
    		$couple_edite = [];	
    		$nb_cple = 0;
    		$nb_solo = 0;
    		$nb_pers = 0;
    		$nb_labl = 0;
    		$nb_etiq = 0;																																		//  Création du tableau qui hébergera les membres du couple
     
    		if(isset($_SESSION['requete_liste_export_Etiquettes'] )) {																		
    				$my_sql = $_SESSION['requete_liste_export_Etiquettes'];                                   //  Requête pour edition filtrée par doyenné, venant de 'Menu_Personne_HV.php'
    		}else{
    				echo " IL devrait toujours y avoir une requete dans S_SESSION... filtrée ou pas !!! "; echo "<br>"; echo "<br>"; exit; //  
    				//  $my_sql = "SELECT * FROM personnes ORDER BY code_paroisse, nom, prenom ";   							//  Requête SANS filtre
    		}
     
    		//  echo "<br>"; echo "requete utilisée dans DISTRIB en 60 : ".$my_sql; echo "<br>"; echo "<br>"; exit;
     
    		$result = mysqli_query($my_cnx, $my_sql) or die ('Erreur ici en 51 : '.mysqli_error($my_cnx) );
    	  $nb = mysqli_num_rows($result);  
    	  while ($ligne = mysqli_fetch_assoc($result) ) { 
        		//  $ordre++;  
        		$id_personne 			= $ligne['id_personne'];
        		$code_civilite_1 	= $ligne['code_civilite']; $civilite_1 = affiche_civilite ($ligne['code_civilite']); 		  $civilite_1 	= remove_accents($civilite_1);
        		$prenom_1					= $ligne['prenom'];    																																  $prenom_1 		= remove_accents($prenom_1); 			//  	echo "<br>"; echo "<br>"; echo "prenom : ".$prenom;
        		$nom_1 						= $ligne['nom'];
        		$code_conjoint  = $ligne['code_conjoint'];
        		$adresse				= $ligne['adresse'];  																																  $adresse 		= remove_accents($adresse);
        		$adresse_2			= $ligne['adresse_2']; 																																  $adresse_2 	= remove_accents($adresse_2);
        		$cp_ville				= $ligne['cp_ville'];
        		$code_doy				= $ligne['code_doyenne'];
        		$code_par				= $ligne['code_paroisse'];
     
     
        		for($i=1;	$i<=1;	$i++) {				//  Permettrait de démarrer à la i_ième étiquette de la page							
        				$nb_pers ++;
     
        				if ($code_conjoint <> '' and $code_conjoint <> 100 )  {  														//  Un couple est détecté, ... donc 1 seule Etiquette est prévue, et si c'est la première, Impression des 2 id_hv sur la même étiquette	
     
    	   						$id_hv1 = $id_personne; 
    	   						$id_hv2 = $code_conjoint;		
     
        						$my_sql = "SELECT * FROM personnes WHERE id_personne = ".$id_hv2; 							//  Lecture des infos du 2° conjoint
        						$resultc = mysqli_query($my_cnx, $my_sql) or die ('Erreur ici en 90 : '.mysqli_error($my_cnx) );
        						$nbc = mysqli_num_rows($resultc); 																							//  Nombre de conjoint trouvé !!!
    	  						while ($ligne = mysqli_fetch_assoc($resultc) ) { 
        								$code_civilite_2 	= $ligne['code_civilite']; $civilite_2 = affiche_civilite ($ligne['code_civilite']); 	$civilite_2 	= remove_accents($civilite_2);
        								$prenom_2 				= $ligne['prenom'];    																																$prenom_2 		= remove_accents($prenom_2); 			//  	echo "<br>"; echo "<br>"; echo "prenom : ".$prenom;
        								$nom_2 						= $ligne['nom'];
        								}
     
        						if(!in_array($id_hv1, $couple_edite) or !in_array($id_hv2, $couple_edite) ) {		//  Test pour savoir si le 1° ou le 2° conjoint n'ont pas déjà eu leur étiquette de 'COUPLE'
       		 							$text = sprintf("%s\n%s\n%s\n%s\n%s\n%s\n%s","$civilite_1 $prenom_1 $nom_1","$civilite_2 $prenom_2 $nom_2", "$adresse", "$adresse_2", "$cp_ville","---------------------------------------------------","1) id_HV: $id_hv1      2) id_HV: $id_hv2"); 
       		 							$text = sprintf("%s\n%s\n%s\n%s\n%s\n%s\n%s","$civilite_1 $prenom_1 $nom_1","$civilite_2 $prenom_2 $nom_2", "$adresse", "$adresse_2", "$cp_ville","---- (Doy.:$code_doy) -------- (Par.:$code_par) ----","1) id_HV: $id_hv1      2) id_HV: $id_hv2"); 
     
        								$pdf->Add_Label($text);																											//  Ajout d'une étiquette de couple à imprimer 
    										$nb_labl++;
        								$nb_etiq++;
        								$nb_cple++;
        						}
     
        						$couple_edite [] = $id_hv1; 																										//  On mémorise en cumulant dans un tableau l'id_personne du 1° membre du couple trouvé
        						$couple_edite [] = $id_hv2; 																										//  On mémorise en cumulant dans un tableau l'id_personne du 2° membre du couple trouvé
     
        				}else{																																							//  Cette personne n'est pas en copuple
        				    $text = sprintf("%s\n%s\n%s\n%s\n%s\n%s","$civilite_1 $prenom_1 $nom_1","$adresse", "$adresse_2", "$cp_ville","---------------------------------------------------","           Votre id_HV : $id_personne"); 
        				    $text = sprintf("%s\n%s\n%s\n%s\n%s\n%s","$civilite_1 $prenom_1 $nom_1","$adresse", "$adresse_2", "$cp_ville","---- (Doy.:$code_doy) -------- (Par.:$code_par) ----","       Votre id_HV : $id_personne"); 
     
        				    $pdf->Add_Label($text);																													//  Ajout d'une étiquette solo à imprimer 
    								$nb_labl++;
        				    $nb_etiq++;
        				    $nb_solo++;
        				}
     
    				}
     
     	  }
     
    //		  	echo "<br>"; echo "<br>"; 
    //		  	echo " Nombre de personnes 'éxaminées' : ".$nb_pers; echo "<br>"; 	 echo "<br>"; 
    //				echo " Nombre d'étiquettes de 'couples' : ".$nb_cple; echo "<br>"; echo "<br>"; 
    //				echo " Nombre d'étiquettes 'de solo' : ".$nb_solo; echo "<br>"; echo "<br>"; 
    //				echo " Nombre de labels conçus' : ".$nb_labl; echo "<br>"; echo "<br>"; 
    //				echo " Nombre d'étiquettes 'à éditer' : ".$nb_etiq; echo "<br>"; echo "<br>"; 	  		 
     
    	  $pdf->Output();
     
    		?>

  7. #7
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 114
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 114
    Points : 8 260
    Points
    8 260
    Billets dans le blog
    17
    Par défaut
    Je ne connais pas ces libs, mais si je reprends ce qui a été dit alors...

    - Le fichier 'fpdf.php' que j'utilise actuellement (et qui ne traduit pas les caractères accentués) est à la racine de mon site. - Dois-je donc aller chercher le fichier 'tfpdf.php' (qui est donc dans mon dossier 'tfpdf' et le mettre à la racine de mon site en le 're'nommant fpdf.php ? donc en écrasant le précédent !!!
    Tu peux renommer fpdf.php en fpdf.php.bak et poser à côté tfpdf.php

    - Là, je comprends mal, car comment instancier $pdf par un 'new tFPDF' alors que ce fichier devrait être renommé (si je suis le conseil) !
    Il faut inclure tfpdf.php à la place de fpdf.php et étendre la classe correspondante, un exemple t'avait été donné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    require_once('tfpdf.php'); // au lieu de ('fpdf.php')
     
    class PDF_Label extends tFPDF { // au lieu de FPDF
    ...
    Après si tout ceci te bloque, peut-être que tu pourrais convertir tes chaînes UTF8 en ISO-8859 => utf8_decode() / mb_convert_encoding()
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  8. #8
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut
    Bonjour Seb,

    Merci de ta réponse en tous point conforme à celle de jreaux62 ...

    et que je n'arrive pas à comprendre !!! Je suis débutant en POO !

    J'ai bien fait ce que vous me demandez :
    - Ramener le fichier tfpdf.php sur la racine de mon site ... en le nommant fpdf.php (Le précédent étant sauvé en .bak)


    En prenant appui sur le fichier joint à mon mail de ce matin ...

    - j'ai modifié la ligne n°3 par require_once('tfpdf.php'); // au lieu de ('fpdf.php')

    Faut-il conserver la ligne 41 ? ou la mettre en commentaire par //

    Où dois-je mettre la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     class PDF_Label extends tFPDF {       // au lieu de FPDF....
    car elle comporte une accolade ouvrante .... et je cherche la 'fermante' ?


    J'ai, bien sûr, commenté la fonction "remove_accents" (lignes 25 à 30)
    et j'ai toujours des accents 'bizarres' ...

    Où est ma faille ?

    Merci à l'avance
    Maub.

  9. #9
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 114
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 114
    Points : 8 260
    Points
    8 260
    Billets dans le blog
    17
    Par défaut
    Tu gardes la ligne 41 telle quelle, et va dans le fichier qui définit PDF_Label, on le voit ligne 7 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require('PDF_Label.php');
    C'est dans ce fichier que tu pourras màj :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class PDF_Label extends tFPDF { // au lieu de FPDF
    Pour l'accolade je te laisse aviser quand tu seras dans le fichier
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  10. #10
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut
    Bonjour Seb,

    Me revoici après une pause 'informatique'.

    J'ai donc effectué, sauf 'boulette de ma part', les manips que tu me demandes et pour illustrer ce que j'ai fait, je t'envoie 3 copies d'écran :

    La 1 est celle du début de mon code :
    - Lignes 3 et 5, appels des librairies
    - Ligne 46, instanciation de PDF_Label

    Nom : Début de mon code.jpg
Affichages : 1535
Taille : 181,1 Ko



    La 2 est celle du début de PDF_Label :
    - Ligne 42, modifiée selon ton conseil
    - Ligne 45, modifiée selon ton conseil

    Nom : Debut de PDF_Label.jpg
Affichages : 1451
Taille : 166,3 Ko



    La 3 est celle d'une page d'impression PDF où il y a toujours les accents mal traduits :

    Nom : Page d'impression PDF.jpg
Affichages : 1432
Taille : 152,1 Ko


    Si tu as besoin des codes en entier au lieu des copies d'écran, dis-le moi !


    Y-a-t-il un moyen de voir si ce sont les bonnes librairies qui sont 'utilisées' ?

    Merci de ta réponse.
    Cordialement.
    Maub

  11. #11
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Salut,
    Une solution serait de toujours utiliser fpdf mais changer l'encodage du fichier en ISO-8859-1 et celui de la connexion à la base de données. On utilisera pas mysqli_query($my_cnx, 'SET NAMES utf8'); mais mysqli_set_charset donc mysqli_set_charset('latin1'); .
    J'utilisais cette technique avec fpdf. Ces manip doivent être faites que dans le fichier PHP qui génère le PDF
    Le bienfait n'est jamais perdu

  12. #12
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut
    Bonjour Willy_k,

    Merci pour ta réponse.

    Tu me conseille de faire 3 choses : Ma compétence étant limitée... je n'y vois pas d'inconvénient !

    Une solution serait de toujours utiliser fpdf mais changer l'encodage du fichier en ISO-8859-1 et celui de la connexion à la base de données. On utilisera pas mysqli_query($my_cnx, 'SET NAMES utf8'); mais mysqli_set_charset donc mysqli_set_charset('latin1'); .
    J'utilisais cette technique avec fpdf. Ces manip doivent être faites que dans le fichier PHP qui génère le PDF


    1 - Toujours utiliser fpdf ... pas de problème (et virer tfpdf !)
    2 - Changer l'encodage du fichier (de fpdf ?) ... je sais faire et j'utilise notepad++
    3 - Changer l'encodage de la base !!! :
    - Comment vérifier son encodage actuel ?
    - Cela risque t-il de modifier l'affichage des données dans d'autres formulaires de mon appli ?
    - Quelle est la procédure la plus simple et la plus efficace ?

    Merci de tes réponses les plus basiques possibles .
    Cordialement
    Maub

  13. #13
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    On suppose que j'ai un fichier toto.php qui contient mon code de génération pdf
    - Je modifierais l'encodage de toto.php avec notepad++
    - toto.php contient un code de connexion à la base de données , ce n'est qu'à ce moment que j'utilise mysqli_set_charset('latin1'); toujours dans mon fichier toto.php.
    Cette manip est spécifique au fichier toto.php
    Dans votre cas, c'est le fichier ex.php (si je me réfère au 1er post) qui est concerné
    Le bienfait n'est jamais perdu

  14. #14
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut
    Bonjour Willy_k,

    et surtout MERCI et BRAVO pour tes conseils et ta solution.

    Les accents sont maintenant correctement imprimés en PDF.

    Bien amicalement à vous tous.

    Maub.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FPDF] FPDF et les accents
    Par pasbonte dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 19/06/2013, 16h13
  2. [FPDF] Problème accents dans fpdf
    Par legrandse dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 26/08/2011, 14h16
  3. [FPDF] Multicell accent tronqué mal interprété
    Par Quenway dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 10/06/2010, 14h34
  4. [FPDF] problème d'accents
    Par npirard dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 07/12/2009, 16h19
  5. [FPDF] Les accents ne passent pas avec FPDF
    Par beegees dans le forum Bibliothèques et frameworks
    Réponses: 13
    Dernier message: 02/03/2009, 09h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo