Document PDF FPDF

jowjon67 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
heliconius Messages postés 539 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je vous remercie d'avance :),

J'ai un problème d'accent, et voudrait savoir comment y remédier, j'ai déjà vue pas mal de forum a ce sujet mais rien n'a fonctionner
$this->Cell(0,0,"L'agent des services vétérinaires soussigné certifie que les denrées désignées ci-dessous sont consignées, en l'attente d'informations complémentaires:");





A voir également:

5 réponses

Fallentree Messages postés 2309 Date d'inscription   Statut Membre Dernière intervention   209
 
accent ou guillemet ?
0
jowjon67 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Les accents, j'ai pas de pb pour les guillemets
0
Fallentree Messages postés 2309 Date d'inscription   Statut Membre Dernière intervention   209
 
remplace les ' par \'
0
Fallentree Messages postés 2309 Date d'inscription   Statut Membre Dernière intervention   209 > Fallentree Messages postés 2309 Date d'inscription   Statut Membre Dernière intervention  
 
Oups les accents !!!?
0
Fallentree Messages postés 2309 Date d'inscription   Statut Membre Dernière intervention   209
 
Moi je n'ai pas eu de problème. tu utilises quoi comme constructeur ?
require('fpdf.php');

$pdf = new FPDF();
$pdf->AddPage();
$pdf->MultiCell(40, 0, $date);


Tu as un truc du genre dans ta function cell ...
$txt2 = str_replace(')','\\)', str_replace('(','\\(',str_replace('\\','\\\\',$txt)));
$s .= sprintf('BT %.2F %.2F Td (%s) Tj ET',($this->x+$dx)*$k,($this->h-($this->y+.5*$h+.3*$this->FontSize))*$k,$txt2);
0
jowjon67 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   > Fallentree Messages postés 2309 Date d'inscription   Statut Membre Dernière intervention  
 
require('tfpdf/tfpdf.php'); 

$pdf=new FPDF();
$pdf->AddPage();
$pdf->Head();
$pdf->Body();

J'utilise le même constructeur que toi à part que je crée directement mes "paragraphes" dans des fonctions
et qui je l'ai affiche à la fin comme pour:
$pdf->Body();




Pour la fonction Cell, oui j'ai un truc comme ça
$txt2='('.str_replace(')','\\)',str_replace('(','\\(',str_replace('\\','\\\\',$txt))).')';
$s .= sprintf('BT %.2F %.2F Td %s Tj ET',($this->x+$dx)*$k,($this->h-($this->y+.5*$h+.3*$this->FontSize))*$k,$txt2);


En voyant ça je me suis dis que peut être j'avais une trop vieille version mais j'ai essayer avec la dernière de FPDF (la 1.81) cela ne fonctionne pas non plus
0
heliconius Messages postés 539 Date d'inscription   Statut Membre Dernière intervention   142
 
Bonsoir,

Je pense qu'il s'agit peut-être d'un problème d'encodage ou de décodage selon que le serveur ou le générateur de la phrase est ANSI ou UTF-8.
Essaye l'une des deux solutions :

$msg = "L'agent des services vétérinaires soussigné certifie que les denrées désignées ci-dessous sont consignées, en l'attente d'informations complémentaires:";
$this->Cell(0,0,utf8_decode($msg)); // si la chaîne est encodée UTF-8
// ou
$this->Cell(0,0,utf_encode($msg)); // si elle est encodée ISO-8859-1

0
jowjon67 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Avec
->Write(5,utf8_decode("test des accents éàê°îÏ"));

ça fonctionne très bien mais n'y a t'il pas un autre moyen plus radical que d'ajouter utf8_decode devant chaque chaine de caractère
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
0
jowjon67 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
header( 'content-type: text/html; charset=utf-8' );


comme il est écrit dans l'explication ceci ne fonctionne pas
Mais merci quand même
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > jowjon67 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Et tes fichiers sont en quoi ?
Faut tout lire
0
jowjon67 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
En PHP mais le pb c'est que je crée un objet FDPF du coup c'est des fonctions prédéfinies assez complexe dans un autre fichier php et à part faire encode_utf8() a chaque chaîne de caractères je n'ai rien trouver d'autre
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > jowjon67 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Non... je n'ai pas demandé avec quel langage de programmation tu les avais coder...ça je l’avais vu ....
je te parle de l'ENCODAGE du fichier... chapitre 1 du lien que je t'ai donné. (tes DEUX fichiers en fait )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
heliconius Messages postés 539 Date d'inscription   Statut Membre Dernière intervention   142
 
Bonsoir,
je crois qu'il faut prendre en compte deux choses :
- le générateur des textes
- les scripts qui créent le PDF

le générateur des textes : les textes à mettre dans le PDF proviennent soit d'un formulaire, soit d'une base de données.

Formulaires.
- Soit il y a plusieurs formulaires (celui qui prend les données et celui qui les traite), soit il n'y en a qu'un :
<form method="post"
name="saisie"
action="traitement.php">
(ici, il y a celui qui prend les données (saisie.php) et celui qui traite celles-ci (traitement.php)
- soit il n'y en n'a qu'un, récursif :
<form method="post"
name="saisie"
action="<?php echo $_SERVER["PHP_SELF"]; ?>">
(ici, client.php qui effectue la saisie ET qui traite celle-ci)

Dans les deux cas les scripts peuvent, lors de l'écriture, être encodés ANSI (ISO-8859-1) ou être encodés UTF-8.
A) Si lors de l'écriture de ces scripts, ils sont encodés UTF-8, la saisie sera, elle aussi encodée UTF-8, il faudra donc les décoder pour la production du PDF et donc utiliser utf8_decode($message)
B) Si ces scripts sont, lors de l'écriture, encodées ANSI, les caractères saisis et traités seront eux-aussi ANSI et l'utilisation de cette fonction ne sera pas nécessaire.

Base de données;
Si les données proviennent d'une base de données et que celle-ci est conçue pour enregistrer des chaines UTF-8 (interclassement: utf8_%_ci), les chaines seront enregistrées et restituées en UTF-8 et l'utilisation de utf8_decode($message) sera aussi, nécessaire).
Si la base de données est créée avec encodage ANSI (ex: latin1_general_ci), l'utilisation de la fonction utf8_decode($message) sera inutile.

Pour résumer:
- BDD UTF-8 : utf8_decode() nécessaire
- Scripts de formulaire et traitement UTF-8 : utf8_decode() nécessaire
- BDD ou formulaire et traitement ANSI : utf8_decode() inutile

A titre d'exemple:
J'ai une base de données généalogique de démo (interclassement: latin1_general_ci) + des scripts PHP rédigés en ANSI. La production du PDF du livre de famille ne pose pas de problème avec la classe myPDF.
Voir en http://www.fauque.fr/demogen/

NB:
- la classe myPDF utilisée n'est qu'une extension de la classe tFPDF
- En bas de la page l'icone "Acrobat" génère le livre de famille
- En dernière page, l'heure de création de ce livre prouve qu'il n'est pas statique mais créé à la volée par l'interrogation de la BDD.
- Désolé si le texte est en anglais, c'est pour une plus large diffusion mais certains prénoms (André) possèdent des accents traduits correctement.
- IMPORTANT: Je te conseille d'utiliser l'éditeur Notepad++ qui te permet de choisir l'encodage (ANSI, UTF-8 sans BOM, UTF-8, UTF-16BE, UTF-16LE). Tu peux facilement le trouver en téléchargement (il est gratuit). Mais plutôt que la version classique, je te conseille la version portable en https://portableapps.com/apps (Development) que tu peux installer et utiliser partout sur une clef USB. Pour être tranquille, sur une clef neuve installe la plateforme et tous les logiciels dont tu as besoin (dont Notepadd++) afin d'avoir ton bureau avec toi sur clef et pouvoir l'utiliser partout (enfin sur des PC, pas des Mac ni Linux).

Est-ce que cela répond à ta question ?
0