Problème superposition images FPDF
Résolu
zoubila44
Messages postés
110
Date d'inscription
Statut
Membre
Dernière intervention
-
zoubila44 Messages postés 110 Date d'inscription Statut Membre Dernière intervention -
zoubila44 Messages postés 110 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde,
J'ai un souci, voila j'ai une chaine de caractère ($chaine) contenant soit du texte, soit une image ( sous forme <img src=''>), le problème c'est que je ne sais ce qu'il y'a dans $chaine, donc j'ai reussi a gerer le truc pour generer mes images et mon text,
seul problème les images apparaissent en haut du pdf et non entre les phrase de text
je ne peux pas mettre des coordonnées en dure dans le code parce que je traite plusieurs chaines de caractère et je les affiches les unes a la suite des autres
et les images ( dans l'exemple j'en ai deux) se superposent dans le coin supérieur gauche de mon pdf
Je voudrait:
http://hpics.li/3336b71 => pdf que j'obtient
http://hpics.li/3ea613e => pdf que j'aimerais obtenir
Voici mon code:
J'ai pris une chaine de cractère bidon avec des images bidons mais cela donne un aperçu de ce que j'ai à traiter
J'ai peur de ne pas mettre fait comprendre, ne pas hésitez à demander plus d'explications
Merci d'avance
J'ai un souci, voila j'ai une chaine de caractère ($chaine) contenant soit du texte, soit une image ( sous forme <img src=''>), le problème c'est que je ne sais ce qu'il y'a dans $chaine, donc j'ai reussi a gerer le truc pour generer mes images et mon text,
seul problème les images apparaissent en haut du pdf et non entre les phrase de text
je ne peux pas mettre des coordonnées en dure dans le code parce que je traite plusieurs chaines de caractère et je les affiches les unes a la suite des autres
et les images ( dans l'exemple j'en ai deux) se superposent dans le coin supérieur gauche de mon pdf
Je voudrait:
http://hpics.li/3336b71 => pdf que j'obtient
http://hpics.li/3ea613e => pdf que j'aimerais obtenir
Voici mon code:
<?php
require('FPDF/fpdf.php');
$chaine="Salut tout le monde, je vais vous montrer les images de guitare et de basse tout d'abord voici la <span>guitare</span> <img src='images/guitare.png' width='50' height='50'/> ensuite va venir la <span> basse </span> <img src='images/basse.jpg' width='50' height='50' />, à toi de jouer";
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetXY('','');
$pdf->SetFont('Helvetica','B',16);
$pdf->SetFillColor(6,211,248);
$pdf->SetTextColor(243,11,180);
$pdf->Cell(0,10,'INSTRUMENTS',1,1,'C',TRUE);
$pdf->Ln(10);
$pdf->SetFillColor(20,150,50);
$pdf->SetTextColor(255,255,255);
$pdf->Cell(0,10,'voici differents instruments',0,1,'L',TRUE);
$pdf->Ln(40);
if (strpos($chaine, '<img ')!=FALSE) {
$tab = filtreQuest($chaine);
foreach ($tab as $key => $value) {
if (is_array($value)==TRUE) {
$pdf->Image($value['src'],'','',$value['width'],$value['height']);
$pdf->Ln(5);
}
else{
$pdf->MultiCell(0,10,$value,1,1,'L',FALSE);
$pdf->Ln(5);
}
}
}else{
$pdf->MultiCell(0,10,$chaine,1,1,'L',FALSE);
$pdf->Ln(5);
}
$pdf->Output();
function filtreQuest($chaine){
$chaine=str_replace('<span>', '', $chaine);
$chaine=str_replace('</span>', '', $chaine);
$chaine=str_replace('à', 'a', $chaine);
$chaine=str_replace('é', 'e', $chaine);
if(strpos($chaine, '<img')){
$chaine=str_replace('<', '|', $chaine);
$chaine=str_replace('/>', '|', $chaine);
$tab=explode('|', $chaine);
foreach ($tab as $key => $value) {
if (strpos($value, 'img ')===0) {
$text[$key]=f_get_info_image($value);
} else{
$text[$key]=$value;
}
}
}
return $text;
}
function f_get_info_image($imgBalise){
$res=array('src'=>'','height'=>'', 'width'=>'');
$imgBalise = str_replace('"', '|', $imgBalise);
$imgBalise = str_replace("'", '|', $imgBalise);
$pos_src=strpos($imgBalise, 'src=|');
if($pos_src===false){}else{
$endPosSrc=strpos($imgBalise, "|",$pos_src+5);
$res["src"]=substr($imgBalise, $pos_src+5, $endPosSrc-($pos_src+5));
}
$pos_h=strpos($imgBalise, 'height=|');
if($pos_h===false){}else{
$endPosH=strpos($imgBalise, "|",$pos_h+8);
$res["height"]=substr($imgBalise, $pos_h+8, $endPosH-($pos_h+8));
}
$pos_w=strpos($imgBalise, 'width=|');
if($pos_w===false){}else{
$endPosW=strpos($imgBalise, "|",$pos_w+7);
$res["width"]=substr($imgBalise, $pos_w+7, $endPosW-($pos_w+7));
}
return $res;
}
?>
J'ai pris une chaine de cractère bidon avec des images bidons mais cela donne un aperçu de ce que j'ai à traiter
J'ai peur de ne pas mettre fait comprendre, ne pas hésitez à demander plus d'explications
Merci d'avance
A voir également:
- Fpdf image
- Image iso - Guide
- Acronis true image - Télécharger - Sauvegarde
- Reduire taille image - Guide
- Légender une image - Guide
- Image gratuite - Guide
2 réponses
$image = $value['src']; $largeur_img = $value['width']; $hauteur_img = $value['height']; $pdf->Cell( 40, ($hauteur_img+3), $pdf->Image($image,$pdf->GetX(), $pdf->GetY(), $largeur_img,$hauteur_img), 0, 1, 'L', false ); $pdf->Ln(1);
http://s000.tinyupload.com/?file_id=48922656315373566330
http://www.fpdf.org/fr/doc/cell.htm
là je pense que tu dois jouer avec les options pour trouver la bonne proportion avec le texte et les images...
Ou simplement utiliser un plugin du genre write_html
http://www.fpdf.org/fr/script/script42.php
qui permet d'envoyer ton html dans le pdf.
Bonne continuation.
J'ai corrigé, avec la solution trouvé ici : http://stackoverflow.com/questions/3471441/inserting-an-image-with-php-and-fpdf
j'ai testé ton code et ça fonctionne chez moi.
j'ai fait quelques changements par rapport à ton code...
j'ai testé ton code et ça fonctionne chez moi.
j'ai fait quelques changements par rapport à ton code...
foreach ($tab as $key => $value) { if (is_array($value)) { // $image = $value['src']; $pdf->Cell( 40, 40, $pdf->Image($image, $pdf->GetX(), $pdf->GetY(), 33.78), 0, 0, 'L', false ); //$pdf->Image($value['src'],0,10,$value['width'],$value['height']); $pdf->Ln(20); } else{ $pdf->MultiCell(0,10,$value,1,1,'L',FALSE); $pdf->Ln(5); } }
Salut Kalo et merci de ta réponse !
Je n'ai pas eu le temps de tester je fais ca des que possible, mais dans la ligne
le 33.78 correspond a quoi ?
car dans mes images html je recupere la source/height/width et je dois les utilisé :s
dans ce que je vois je n'ai pas l'impression que cela se passe ainsi
je t'en dis plus des que je l'ai tester
merci encore de ta réponse
Je n'ai pas eu le temps de tester je fais ca des que possible, mais dans la ligne
$pdf->Cell( 40, 40, $pdf->Image($image, $pdf->GetX(), $pdf->GetY(), 33.78), 0, 0, 'L', false );
le 33.78 correspond a quoi ?
car dans mes images html je recupere la source/height/width et je dois les utilisé :s
dans ce que je vois je n'ai pas l'impression que cela se passe ainsi
je t'en dis plus des que je l'ai tester
merci encore de ta réponse
Code tester
les images se mettent en dessous du texte
http://hpics.li/5009fc8
voila les petites modifs que j'avais trouver j'arrive à un pdf a peu près similaire au tiens
les images se mettent en dessous du texte
http://hpics.li/5009fc8
voila les petites modifs que j'avais trouver j'arrive à un pdf a peu près similaire au tiens
<?php
require('FPDF/fpdf.php');
$chaine="Salut tout le monde, je vais vous montrer les images de guitare et de basse tout d'abord voici la <span>guitare</span> <img src='images/guitare.png' width='50' height='50'/> ensuite va venir la <span> basse </span> <img src='images/basse.jpg' width='50' height='50' />, à toi de jouer";
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetXY('','');
$pdf->SetFont('Helvetica','B',16);
$pdf->SetFillColor(6,211,248);
$pdf->SetTextColor(243,11,180);
$pdf->Cell(0,10,'INSTRUMENTS',1,1,'C',TRUE);
$pdf->Ln(10);
$pdf->SetFillColor(20,150,50);
$pdf->SetTextColor(255,255,255);
$pdf->Cell(0,10,'voici differents instruments',0,1,'L',TRUE);
$pdf->Ln(40);
if (strpos($chaine, '<img ')!=FALSE) {
$tab = filtreQuest($chaine);
foreach ($tab as $key => $value) {
$x=$pdf->GetX();
$y=$pdf->GetY();
if (is_array($value)==TRUE) {
$pdf->Image($value['src'],$x,$y+10,$value['width'],$value['height']);
$pdf->Ln($value['height']);
}
else{
$pdf->SetXY($x,$y);
$pdf->MultiCell(0,10,$value,1,1,'L',FALSE);
$pdf->Ln(5);
}
}
}else{
$pdf->SetXY($x,$y);
$pdf->MultiCell(0,10,$chaine,1,1,'L',FALSE);
$pdf->Ln(5);
}
$pdf->Output();
function filtreQuest($chaine){
$chaine=str_replace('<span>', '', $chaine);
$chaine=str_replace('</span>', '', $chaine);
$chaine=str_replace('à', 'a', $chaine);
$chaine=str_replace('é', 'e', $chaine);
if(strpos($chaine, '<img')){
$chaine=str_replace('<', '|', $chaine);
$chaine=str_replace('/>', '|', $chaine);
$tab=explode('|', $chaine);
foreach ($tab as $key => $value) {
if (strpos($value, 'img ')===0) {
$text[$key]=f_get_info_image($value);
} else{
$text[$key]=$value;
}
}
}
return $text;
}
function f_get_info_image($imgBalise){
$res=array('src'=>'','height'=>'', 'width'=>'');
$imgBalise = str_replace('"', '|', $imgBalise);
$imgBalise = str_replace("'", '|', $imgBalise);
$pos_src=strpos($imgBalise, 'src=|');
if($pos_src===false){}else{
$endPosSrc=strpos($imgBalise, "|",$pos_src+5);
$res["src"]=substr($imgBalise, $pos_src+5, $endPosSrc-($pos_src+5));
}
$pos_h=strpos($imgBalise, 'height=|');
if($pos_h===false){}else{
$endPosH=strpos($imgBalise, "|",$pos_h+8);
$res["height"]=substr($imgBalise, $pos_h+8, $endPosH-($pos_h+8));
}
$pos_w=strpos($imgBalise, 'width=|');
if($pos_w===false){}else{
$endPosW=strpos($imgBalise, "|",$pos_w+7);
$res["width"]=substr($imgBalise, $pos_w+7, $endPosW-($pos_w+7));
}
return $res;
}
?>
Merci du temps passer en recherche et bonne continuation aussi