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

Bibliothèques et frameworks PHP Discussion :

[phpToPDF] Insertion d'une image dans une cellule


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut [phpToPDF] Insertion d'une image dans une cellule
    Bonjour,

    Je veux mettre une image dans une cellule.

    J'ai suivi les instructions de super-manu, mais j'ai toujours les images sur la dernière page.

    J'ai dans mon script ajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $proprieteContenu = array(
    		'IMAGE' => '1',
    		'T_COLOR' => array(0,0,0),
    		'T_SIZE' => 7,
    Dans la classe phpToPDF DrawTableau (en rouge) :
    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
    //*********************************************************************
    		// Ce qui suit est valable pour toutes les cellules du tableau (hors header bien entendu).
    		//*********************************************************************
    		$data = Array();
    		for ($i=0 ; $i<count($datas) ; $i+=$nbCol)
    		{
    			//*********************************************************************
    			// Ce qui suit est valable pour la première colonne du tableau
    			//*********************************************************************
    			// si l'utilisateur a précisé un alignement pour la première colonne, on l'applique ici
    			if (isset($datasType['T_ALIGN_COL0']))
    				$data[0]['T_ALIGN'] = $datasType['T_ALIGN_COL0'];
    
    			// Si l'utilisateur a précisé une couleur de fond pour la première colonne, on l'applique ici.
    			if (isset($datasType['BG_COLOR_COL0']))
    				$data[0]['BG_COLOR'] = $datasType['BG_COLOR_COL0'];
    
    			for ($j=$i ; $j<$i+$nbCol ; $j++)
    			{
    				$k = $j-$i;
    				$data[$k]['TEXT'] = $datas[$j];
    				$data[$k]['T_SIZE'] = $datasType['T_SIZE'];
    				$data[$k]['LN_SIZE'] = $datasType['LN_SIZE'];
    
    				// par défaut, le texte est centré à gauche, non italic, non souligné et non gras.
    				// par défaut, les cellules ne sont pas fusionnées.
    				$data[$k]['T_TYPE'] = '';
    				$data[$k]['T_ALIGN'] = '';
    				$data[$k]['COLSPAN'] = "1";
    				
    				// Si l'utilisateur à prévu l'insertion d'image
    				if (isset($datasType['IMAGE']))
    					$data[0]['IMAGE'] = $tagImage[$i];
    Dans la classe phpToPDF Draw_Data (en rouge) vers la fin de la fonction :
    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
    //if we have colspan, just ignore the next cells
    			if (isset($data[$i]['COLSPAN'])){
    				$i = $i + (int)$data[$i]['COLSPAN'] - 1;
    			}
    			// Pour la gestion des images
    			if($data[$i]['IMAGE'])
    				$this->Image($data[$i]['IMAGE'], $x+1, $y+1);
    
    		}
    
    		$this->Data_On_Current_Page = true;
    
    		//Go to the next line
    		$this->Ln($h);
    	}
    Et à nouveau dans mon script au moment où je souhaite imprimer le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if(!empty($contenuTableau))
    			{
    				$pdf->drawTableau($pdf, $proprietesTableau, $proprieteHeader, $contenuHeader, $proprieteContenu, $contenuTableau);
    				$i=0;
    				foreach($pdf->posY as $value)
    				{
    					foreach($value as $position)
    					{
    						if(!empty($images[$i])) $pdf->Image($href.$images[$i], $pdf->posX, $position, '', 5);
    						$i++;
    					}
    				}
    			}
    M'est avis, c'est juste un avis, qu'il y a comme un problème quelque part, mais je pense avoir tout suivi.

    Quelque chose vous saute aux yeux ?

    Merci d'avance.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  2. #2
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    ça marche au poil pour une page.

    J'avais mal positionné ma boucle.

    C'est top.

    Mais dès que je passe à plusieurs page c'est le flop.

    Les images sont toutes sur la dernière page.

    Glop.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  3. #3
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Dans drawTableau de phpToPDF

    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
    function drawTableau(&$pdf, $tableType, $headerType, $headerDatas, $datasType, $datas, $tagImage = array())
    	{ 
    ....
    //*********************************************************************
    		// Ce qui suit est valable pour toutes les cellules du tableau (hors header bien entendu).
    		//*********************************************************************
    		$data = Array();
    		for ($i=0 ; $i<count($datas) ; $i+=$nbCol)
    		{
    			//*********************************************************************
    			// Ce qui suit est valable pour la première colonne du tableau
    			//*********************************************************************
    			// si l'utilisateur a précisé un alignement pour la première colonne, on l'applique ici
    			if (isset($datasType['T_ALIGN_COL0']))
    				$data[0]['T_ALIGN'] = $datasType['T_ALIGN_COL0'];
    
    			// Si l'utilisateur a précisé une couleur de fond pour la première colonne, on l'applique ici.
    			if (isset($datasType['BG_COLOR_COL0']))
    				$data[0]['BG_COLOR'] = $datasType['BG_COLOR_COL0'];
    			
    			for ($j=$i ; $j<$i+$nbCol ; $j++)
    			{
    				$k = $j-$i;
    				$data[$k]['TEXT'] = $datas[$j];
    				$data[$k]['T_SIZE'] = $datasType['T_SIZE'];
    				$data[$k]['LN_SIZE'] = $datasType['LN_SIZE'];
    
    				// par défaut, le texte est centré à gauche, non italic, non souligné et non gras.
    				// par défaut, les cellules ne sont pas fusionnées.
    				$data[$k]['T_TYPE'] = '';
    				$data[$k]['T_ALIGN'] = '';
    				$data[$k]['COLSPAN'] = "1";
    
    				// Si l'utilisateur a précisé une couleur de fond pour les autres colonnes, on l'applique ici.
    				if ( (isset($datasType['BG_COLOR'])) && ($k!=0) )
    					$data[$k]['BG_COLOR'] = $datasType['BG_COLOR'];
    				
    				// Si l'utilisateur à prévu l'insertion d'image
    				if (isset($datasType['IMAGE']) && $datasType['IMAGE'] == $k && !empty($tagImage[$i/$nbCol])) $data[$k]['IMAGE'] = $tagImage[$i/$nbCol];
    				else $data[$k]['IMAGE'] = "";
    Dans Draw_Data de phpToPDF

    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
    //Draw the cells of the row
    		for($i=0;$i<$this->tb_columns;$i++)
    		{
    
    			//border size BRD_SIZE
    			$this->SetLineWidth($data[$i]['BRD_SIZE']);
    
    			//fill color = BG_COLOR
    			list($r, $g, $b) = $data[$i]['BG_COLOR'];
    			$this->SetFillColor($r, $g, $b);
    
    			//Draw Color = BRD_COLOR
    			list($r, $g, $b) = $data[$i]['BRD_COLOR'];
    			$this->SetDrawColor($r, $g, $b);
    
    			//Text Color = T_COLOR
    			list($r, $g, $b) = $data[$i]['T_COLOR'];
    			$this->SetTextColor($r, $g, $b);
    
    			//Set the font, font type and size
    			$this->SetFont(	$data[$i]['T_FONT'],
    							$data[$i]['T_TYPE'],
    							$data[$i]['T_SIZE']);
    
    			//Save the current position
    			$x=$this->GetX();
    			$y=$this->GetY();
    
    			// Sauvegarde des positions X/Y
    			if($i==0){
    				$this->posX = $x;
    				$this->posY[$this->PageNo()][] = $y;
    			}
    
    			//print the text
    			$this->MultiCellTable(
    					$data[$i]['CELL_WIDTH'],
    					$data[$i]['LN_SIZE'],
    					$data[$i]['TEXT'],
    					$data[$i]['BRD_TYPE'],
    					$data[$i]['T_ALIGN'],
    					$data[$i]['V_ALIGN'],
    					1,
    					$h - $data[$i]['LN_SIZE'] * $data[$i]['CELL_LINES']
    					);
    
    			//Put the position to the right of the cell
    			$this->SetXY($x + $data[$i]['CELL_WIDTH'],$y);
    
    			//if we have colspan, just ignore the next cells
    			if (isset($data[$i]['COLSPAN'])){
    				$i = $i + (int)$data[$i]['COLSPAN'] - 1;
    			}
    			// Pour la gestion des images
    			if($data[$i]['IMAGE'])
    				$this->Image($href.$data[$i]['IMAGE'], $x+1, $y+1, '', 5);
    Dans votre script

    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
    // Définition des propriétés du reste du contenu du tableau.
    	// La valeur de 'IMAGE' donne le n° de la colonne devant recevoir cette image
    	$proprieteContenu = array(
    		'IMAGE' => '1',
    		'T_COLOR' => array(0,0,0),
    		'T_SIZE' => 5,
    		'T_FONT' => 'Arial',
    		'T_ALIGN_COL0' => 'L',
    		'T_ALIGN' => 'L',
    		'V_ALIGN' => 'T',
    		'T_TYPE' => '',
    		'LN_SIZE' => 8,
    		'BG_COLOR_COL0' => array(255,255,255),
    		'BG_COLOR' => array(255,255,255),
    		'BRD_COLOR' => array(0,92,177),
    		'BRD_SIZE' => 0.1,
    		'BRD_TYPE' => '1',
    		'BRD_TYPE_NEW_PAGE' => '',
    		);
    Dans votre script à l'appel de la fonction drawTableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdf->drawTableau($pdf, $proprietesTableau, $proprieteHeader, $contenuHeader, $proprieteContenu, $contenuTableau, $images);
    Bien alimenter $images.

    Une évolution futur, mettre en variable la taille de l'image.

    Merci jc_cornic et super-manu pour la base
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut encore, l'image de cellule ne marche pas
    Bonjour, encore le problème persiste l'image de cellule ne marche pas malgré que j'ai bien effectué les modifications modifications citées dessus!

    Prière de m'aider, j'en ai vraiment besoin

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

Discussions similaires

  1. [Débutant] Manipulation d'images : intégrer une image dans une image
    Par noscollections dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/10/2014, 11h51
  2. [MySQL] Insertion d'une image dans une div d'une news
    Par godsilken50 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/05/2007, 16h58
  3. Mettre une Image dans une Image
    Par shadowhocine dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 19/12/2006, 18h40
  4. Réponses: 3
    Dernier message: 30/10/2006, 11h21
  5. Insérer une légende dans une image avec une police plus petite
    Par Paulinho dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 29/04/2006, 14h19

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