[PDF et ODBC]
Résolu
styvodiabolo
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
-
eman4you Messages postés 54 Date d'inscription Statut Membre Dernière intervention -
eman4you Messages postés 54 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Voilà le souci :
Pour fabriquer mes pdf (à l'aide de la classe FPDF) j'utilise des données tirées de deux bases de données.
Avant je tirais les données d'une base SQL Server et d'une autre base de données : Mysql.
Depuis un petit moment, un souci se pose :
Maintenant pour me connecter à la base SQL Server, j'utilise un odbc (avant je faisait un mssql_connect) mais depuis que je l'utilise (l'odbc) mes pdf me renvoient des caractères bizarres qui ne ressemblent à rien.
Question : Y'a-t-il réellement un conflit entre ODBC et PDF ou ais-je oublié quelque chose ? (En sachant que dans le reste de mon application j'utilise l'odbc pour tirer d'autres valeurs de la base SQL Server et là y' pas de souci -> c'est seulement pour les pdf le souci).
Merci d'avance.
Voilà le souci :
Pour fabriquer mes pdf (à l'aide de la classe FPDF) j'utilise des données tirées de deux bases de données.
Avant je tirais les données d'une base SQL Server et d'une autre base de données : Mysql.
Depuis un petit moment, un souci se pose :
Maintenant pour me connecter à la base SQL Server, j'utilise un odbc (avant je faisait un mssql_connect) mais depuis que je l'utilise (l'odbc) mes pdf me renvoient des caractères bizarres qui ne ressemblent à rien.
Question : Y'a-t-il réellement un conflit entre ODBC et PDF ou ais-je oublié quelque chose ? (En sachant que dans le reste de mon application j'utilise l'odbc pour tirer d'autres valeurs de la base SQL Server et là y' pas de souci -> c'est seulement pour les pdf le souci).
Merci d'avance.
A voir également:
- [PDF et ODBC]
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Save as pdf office 2007 - Télécharger - Bureautique
- Télécharger dictionnaire larousse pdf gratuit - Télécharger - Dictionnaires & Langues
- Notices gratuites pdf - Guide
- Pdf creator - Télécharger - PDF
16 réponses
Pour ODBC, tu dois préciser la famille de caractères en provenance de la base.
Ton probleme vient des parametres lorsque tu crees ta connexio ODBC.
En effet, ODBC est prévu pour tous les caractères, accentués ou pas, UNICODE, etc...
alors faut indiquer au driver quels caractères sont présents en base
Ton probleme vient des parametres lorsque tu crees ta connexio ODBC.
En effet, ODBC est prévu pour tous les caractères, accentués ou pas, UNICODE, etc...
alors faut indiquer au driver quels caractères sont présents en base
Mes recherches sont restées sans succès, saurais tu m'aiguiller pour que je puisse changer la famille de caractères ?
* essaie de créer une table en spécifiant l'encodage utf8
* ajoute des car. accentués
* récupère ces meme car. accentués
------------------------------------------------------------------
* ajoute des car. accentués
* récupère ces meme car. accentués
------------------------------------------------------------------
Autre approche :
Juste avant la génération du PDF :
Remplace les car. en provenance de la base
par une chaine "hard-codée" dans ton code
???
Ces car. accentués apparaissent dans le PDF ???
Juste avant la génération du PDF :
Remplace les car. en provenance de la base
par une chaine "hard-codée" dans ton code
???
Ces car. accentués apparaissent dans le PDF ???
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
arf, 1000 excuses mais je ne vois pas trop la démarche à suivre, puisses tu m'expliciter davantage stp ?
Petit bout de code pour le pdf :
require('./../fpdf/fpdf.php');
require_once('./../inc/Connexion.php');
cnx();
$pdf=new FPDF('L');
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetLeftMargin(1);
$pdf->Ln(3);
$pdf->SetFont('Arial','',9);
$pdf->Cell(10,10,"oui");
$pdf->Output();
decnx();
Partie de code pour la fonction odbc_connect (Connexion.php)
$GLOBALS['conn'];
function cnx($host = '***', $username = '***', $password = '***', $db = '***') {
$connection_string = "DRIVER={SQL SERVER};SERVER=".$host.";DATABASE=".$db.";";
$conn = odbc_connect($connection_string, $username, $password);
if(!$conn) {
echo "Impossible d'établir une connexion au serveur ".$host."<br>";
exit;
}
$GLOBALS['conn']=$conn;
}
function decnx() {
@odbc_close($GLOBALS['conn']);
}
require('./../fpdf/fpdf.php');
require_once('./../inc/Connexion.php');
cnx();
$pdf=new FPDF('L');
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetLeftMargin(1);
$pdf->Ln(3);
$pdf->SetFont('Arial','',9);
$pdf->Cell(10,10,"oui");
$pdf->Output();
decnx();
Partie de code pour la fonction odbc_connect (Connexion.php)
$GLOBALS['conn'];
function cnx($host = '***', $username = '***', $password = '***', $db = '***') {
$connection_string = "DRIVER={SQL SERVER};SERVER=".$host.";DATABASE=".$db.";";
$conn = odbc_connect($connection_string, $username, $password);
if(!$conn) {
echo "Impossible d'établir une connexion au serveur ".$host."<br>";
exit;
}
$GLOBALS['conn']=$conn;
}
function decnx() {
@odbc_close($GLOBALS['conn']);
}
ok :
AVANT LE $pdf->Output();
mets tout plein de caractères accentués et
regarde le resultat dans le PDF
exemple :
$pdf->Cell(4,4,"ôh les bô caractères accentués");
$pdf->Cell(8,8,"aéàéèàéàé");
etc....
essayes avec des cellules différentes.
Ca passe dans le PDF ?????
AVANT LE $pdf->Output();
mets tout plein de caractères accentués et
regarde le resultat dans le PDF
exemple :
$pdf->Cell(4,4,"ôh les bô caractères accentués");
$pdf->Cell(8,8,"aéàéèàéàé");
etc....
essayes avec des cellules différentes.
Ca passe dans le PDF ?????
le souci est que le $pdf->Cell(10,10,"oui"); me sort un pdf incompréhensible donc avec les 2 autres cellules c'est toujours aussi illisible.
donc le problème ne vient pas des caractères accentués ....................................
......................
....................
......................
....................
Non non, 1000 excuses si je me suis mal exprimé.
Juste si je pouvais voir mes pdf ça serait d'enfer.
Avec le bout de code, vois tu pourquoi je n'arrive même pas à voir le mot "oui" ?
Merci à toi.
Juste si je pouvais voir mes pdf ça serait d'enfer.
Avec le bout de code, vois tu pourquoi je n'arrive même pas à voir le mot "oui" ?
Merci à toi.
C'est illisile car il manque la police Arial (dans ce cas,
comme ta ligne $pdf->SetFont('Arial','',9); l'indique)
Cette police de caractères doit etre copié sur le serveur sur lequel tourne la page php qui utilise FPDF
Pour installer FPDF, il faut copier le fichier fpdf.php et le dossier font/ à la racine du répertoire
Il te manque les fonts, donc FPDF ne sait pas comment générér les vecteurs du PDF
comme ta ligne $pdf->SetFont('Arial','',9); l'indique)
Cette police de caractères doit etre copié sur le serveur sur lequel tourne la page php qui utilise FPDF
Pour installer FPDF, il faut copier le fichier fpdf.php et le dossier font/ à la racine du répertoire
Il te manque les fonts, donc FPDF ne sait pas comment générér les vecteurs du PDF
Comment cela se fait-il sachant qu'avant d'utiliser l'odbc j'étais avec mssql_connect et là y'avais aucun souci tant au niveau de l'appli qu'au niveau des pdf ?
Et donc juste en changeant les fonctions mssql_... par les fonctions odbc_... l'appli tourne bien mais une fois arrivé au pdf ça foire.
Pourquoi ça ? Merci.
Et donc juste en changeant les fonctions mssql_... par les fonctions odbc_... l'appli tourne bien mais une fois arrivé au pdf ça foire.
Pourquoi ça ? Merci.
C'est bon, j'ai la solution (un peu étrange) :
De part le require, j'importais un fichier avec des fonctions à l'intérieur.
Mais là, depuis que je n'iporte plus -> j'écris le code des fonctions (importées) dans le script principal et ça marche.
Maintenant, j'ai le souci des accents mais je me suis rappelé une fonction qui peut les gérer -> utf8_decode("une chaine avec accents"); et là pas de souci :).
Un grand merci à toi evan4you.
Bonne continuation.
Tchao.
De part le require, j'importais un fichier avec des fonctions à l'intérieur.
Mais là, depuis que je n'iporte plus -> j'écris le code des fonctions (importées) dans le script principal et ça marche.
Maintenant, j'ai le souci des accents mais je me suis rappelé une fonction qui peut les gérer -> utf8_decode("une chaine avec accents"); et là pas de souci :).
Un grand merci à toi evan4you.
Bonne continuation.
Tchao.