PHP: export vers document style word

bonjour,

j ai creer un code qui me permet d’“exporter” une page vue par l’utilisateur en word.

Le problème c est l’image!

en effet, je met un lien vers l’image que je veux, mais pour qu elle s affiche correctement dans word, il faut qu elle soit dans le bon chemin…ce qui est pas tres pratique
si on deplace le fichier dans un dossier que la ou il y a l image, plus d image a l ouverture du fichier!!!

comment faire pour l’integrer dans le documents word?

je vous joins le code que j ai fait:

merci


	<?php
	header("Content-Type: application/x-msword;name=devis.doc\n");
	header("Content-Disposition: attachment;filename=devis.doc\n");

    $date=date('Y-m-d');
	$date_fr=date('d/m/Y');
	include '../connexion.php';
	// Requete - Execution  
	$sql_recherche  = "SELECT * FROM client WHERE id_client='$id_client'";   
	$req_recherche = mysql_query($sql_recherche) or die(mysql_error());   
	while($data_recherche = mysql_fetch_array($req_recherche))   
  {
  $client=$data_recherche['Nom'];
  $adresse=$data_recherche['Adresse'];
  $ville=$data_recherche['ville'];
  $code_postal=$data_recherche['code_postal'];
  }

	echo '<img src="images/sad.PNG" width="256" height="60"><br>';
	echo '<br><br>';

	echo '<Blockquote><Blockquote><Blockquote><Blockquote><Blockquote>'.$client.'<br>';
	echo $adresse.'<br>';
	echo $code_postal.' '.$ville.'</Blockquote></Blockquote></Blockquote></Blockquote></Blockquote><br><br>';
	echo 'Le '.$date_fr.'<br><br>';
	if($modifier==1)
	echo 'Devis n°'.$numero_devis_modifier;
  else
  echo 'Devis n°'.$num;
	echo '<br>';
  
	echo '<table border=1>';
	echo '<tr><td>Référence</td><td>Désignation</td><td>Prix unitaire</td><td>Quantité</td><td>Prix Total</td></tr>';
	for($i=0;$i<=9;$i++)
  {
  $quantite_temp='quantite_'.$i;
  $quantite=$$quantite_temp;
  if($quantite!=0)
  	{
  	$designation_temp='designation_'.$i;
  	$designation=$$designation_temp;
  	$ref_sad_temp='ref_sad_'.$i;
  	$ref_sad=$$ref_sad_temp;
  	$prix_achat_temp='prix_achat_'.$i;
  	$prix_achat=$$prix_achat_temp;
  	$coeff_temp='coeff_'.$i;
  	$coeff=$$coeff_temp;
  	if($coeff_global!=1)
    $coeff=$coeff_global;
  	echo '<tr>';
  	echo '<td>'.$ref_sad.'</td><td width="200">'.$designation.'</td><td width="100">'.$prix_achat*$coeff.'</td><td width="100">'.$quantite.'</td><td width="100">'.$coeff*$prix_achat*$quantite.'</td>';
  	echo '</tr>';
  	$total=$coeff*$prix_achat*$quantite+$total;
  	}
  }
	echo '</table>';
	echo 'Montant total de '.$total.' € HT pour le devis';
	echo '<br><br><br>';
	echo $remarques.'<br>';
	?>
	<script langage="javascript">
	window.close();
	</script>
	<?php

pour information, j ai egalement penser, a partir d un fichier de type RTF comme modele et via des str replace, modifier les données que je voulais

mais ca me pose 2 problèmes:

  • la creation du tableau est fort difficile (j ai pas encore trouver le bon code en RTF pour creer le tableau correctement, pour l’instant ca me donne des morceaux de tableau…)

  • forcer le telechargement du fichier obtenu

donc c est pour cela que je prefere la 1ere solution, sauf si qq1 a le code RTF precis pour la creation du tableau…

Ca ne ressemble pas à du word ton truc, mais plutôt à une page internet tout ce qu’il y a de plus classique non.

Export vers PDF ne serait-il pas plus adapté ? D’autant qu’il existe des class qui font ca très bien et sont déjà toutes faites bien évidement ^^

effectivement c une page internet que j envoi dans du word

avec un code vu sur internet j ai modifie le mien pour l adapter a ce que j ai vu, j ai donc creer ceci:


	$output = "";
	if(!($fp= fopen ("devis.htm", "r"))) die ("Can't open");
	//if(!($fp= fopen ("d:/EasyPHP/newsletter/page.rtf", "r"))) die ("Can't open");
	$output = fread($fp, 2000000);
	fclose ($fp);
    $date=date('Y-m-d');
	$date_fr=date('d/m/Y');
	include '../connexion.php';
	// Requete - Execution  
	$sql_recherche  = "SELECT * FROM client WHERE id_client='$id_client'";   
	$req_recherche = mysql_query($sql_recherche) or die(mysql_error());   
	while($data_recherche = mysql_fetch_array($req_recherche))   
  {
  $client=$data_recherche['Nom'];
  $adresse=$data_recherche['Adresse'];
  $ville=$data_recherche['ville'];
  $code_postal=$data_recherche['code_postal'];
  }
	$output = str_replace ("<<client>>",$client, $output);
	$output = str_replace ("<<adresse>>",$adresse, $output);
	$output = str_replace ("<<code postal>>",$code_postal, $output);
	$output = str_replace ("<<ville>>",$ville, $output);
	$output = str_replace ("<<date>>",$date_fr, $output);
	if($modifier==1)
	$output = str_replace ("<<num_devis>>",$numero_devis_modifier, $output);
  else
  $output = str_replace ("<<num_devis>>",$num, $output);
	$article .=	'<tr><td>Référence Sad</td><td>Désignation</td><td>Prix unitaire</td><td>Quantité</td><td>Prix Total</td></tr>';
	for($i=0;$i<=9;$i++)
  {
  $quantite_temp='quantite_'.$i;
  $quantite=$$quantite_temp;
  if($quantite!=0)
  	{
  	$designation_temp='designation_'.$i;
  	$designation=$$designation_temp;
  	$ref_sad_temp='ref_sad_'.$i;
  	$ref_sad=$$ref_sad_temp;
  	$prix_achat_temp='prix_achat_'.$i;
  	$prix_achat=$$prix_achat_temp;
  	$coeff_temp='coeff_'.$i;
  	$coeff=$$coeff_temp;
  	if($coeff_global!=1)
    $coeff=$coeff_global;
  	$article .='<tr>';
  	$article .='<td>'.$ref_sad.'</td><td width="200">'.$designation.'</td><td width="100">'.$prix_achat*$coeff.'</td><td width="100">'.$quantite.'</td><td width="100">'.$coeff*$prix_achat*$quantite.'</td>';
  	$article .='</tr>';
  	// remplace les champs
  	$total=$coeff*$prix_achat*$quantite+$total;
  	}
  }
	$output = str_replace ("<<article>>",$article, $output);
	$output = str_replace ("<<montant total>>",$total, $output);
	$output = str_replace ("<<remarques>>",$remarques, $output);
    $TempFilename = 'temp.doc';
    $FinalFilename  = 'devis.doc';
    $content = $output; /* variable avec le contenu récupérer à l'étape précédente */
    /* Enregistrement du document formaté sur le disque */
    if (!$handle = fopen($TempFilename , 'a+')) {
        echo "Impossible d'ouvrir le fichier ($TempFilename )";
        exit;
        }
    if (fwrite($handle, $content) === FALSE) {
        echo "Impossible d'écrire dans le fichier ($TempFilename )";
        exit;
  }
    fclose($handle);
    /*  Ouverture d'une boite de dialogue pour ouvrir/sauvegarder le fichier */
    header("Content-Type: application/msword" );
    header('Content-Disposition: attachment; filename="'.$FinalFilename .'"');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    readfile($TempFilename);
    /* Suppression du document */
    unlink($TempFilename); 

mais j ai des erreurs :
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\sadetel\connexion.php:6) in c:\program files\easyphp1-8\www\sad\devis\gestion_devis_verif.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\sadetel\connexion.php:6) in c:\program files\easyphp1-8\www\sad\devis\gestion_devis_verif.php on line 80

Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\sadetel\connexion.php:6) in c:\program files\easyphp1-8\www\sad\devis\gestion_devis_verif.php on line 81

pourtant je n affiche rien, je ne comprends pas pourquoi j ai cette erreur…

ya des espaces ou qqch comme ca en haut du code je suppose?