génération fichier odt

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : génération fichier odt

génération fichier odt

par ladinho58 » 03 janv. 2012, 16:07

Bonjour,

je reprend le travail d'un ancien stagiaire et je me retrouve devant une erreur que je ne comprend pas trop (voire pas du tout :( ). En gros, après le remplissage de quelques formulaires, les informations qui ont été rentrées dedans sont mises sous forme d'un rapport en format odt. Cependant, lorsque je teste le bouton "générer le rapport", je tombe sur ça :

Fatal error: Uncaught exception 'OdfException' with message 'Nothing to parse - check that the content.xml file is correctly formed' in C:\wamp\www\vespa_b1\rapport\odtphp\library\odf.php on line 61

OdfException: Nothing to parse - check that the content.xml file is correctly formed in C:\wamp\www\vespa_b1\rapport\odtphp\library\odf.php on line 61
public function __construct($filename, $config = array())
    {
    	if (! is_array($config)) {
    		throw new OdfException('Configuration data must be provided as array');
    	}
    	foreach ($config as $configKey => $configValue) {
    		if (array_key_exists($configKey, $this->config)) {
    			$this->config[$configKey] = $configValue;
    		}
    	}
        if (! class_exists($this->config['ZIP_PROXY'])) {
            throw new OdfException($this->config['ZIP_PROXY'] . ' class not found - check your php settings');
        }
        $zipHandler = $this->config['ZIP_PROXY'];
        $this->file = new $zipHandler();
        if ($this->file->open($filename) !== true) {
            throw new OdfException("Error while Opening the file '$filename' - Check your odt file"); // LIGNE 61
        }
        if (($this->contentXml = $this->file->getFromName('content.xml')) === false) {
            throw new OdfException("Nothing to parse - check that the content.xml file is correctly formed");
        }

        $this->file->close();

Et en dessous de ça, un Call Stack avec des lignes m'indiquant des erreurs ici :
{main}( ) ..\generate_rapport.php:0
2 0.1041 2325480 generateRapport( ) ..\generate_rapport.php:147
3 0.1041 2325480 mergeODT( ) ..\generate_common.php:194
4 0.1050 2325568 merge( ) ..\generate_common.php:181
5 0.1052 2326320 Odf->__construct( ) ..\generate_merge.php:52

generate_rapport.php :
// ********************************************************************
// PARTIE : CREATION DES DOCUMENTS WORD ET PDF
// ********************************************************************	
	$dossier = '../rapports/'.$_POST['numero_affaire'].'/';
	if(!is_dir($dossier)){
		@mkdir($dossier);
	}
	$reqnum = "SELECT id_rapport FROM rapport WHERE id_affaire = '".$_SESSION['session_numero_affaire']."'";
	$resultnum = mysql_query($reqnum) or die('Requête invalide : ' . mysql_error() . "\n" . 'Requête complète : ' . $reqnum);
	$numfichier = mysql_num_rows($resultnum); +1;
	if(!is_numeric($numfichier) || $numfichier==0)
		$numfichier = 1;
	$file_name = $dossier.'Rapport_Client_' . $_SESSION['session_numero_affaire']."_".$numfichier.".odt";
	
	$req = "SELECT nom_fichier FROM region r JOIN modele m ON (r.id_modele = m.id_modele) WHERE r.id_region='".$_SESSION['id_region']."'";
	$query = mysql_query($req) or die('Requête invalide : ' . mysql_error() . "\n" . 'Requête complète : ' . $req);
	if(mysql_num_rows($query)>=1){
		$resultat=mysql_fetch_row($query);
		$template = "../template/".$resultat[0];
	}
	else{
		echo '<p class="erreur"> Il n\'existe pas de modèle de rapport pour votre région. </p>';
		echo '<div class="faux_bouton"><a href="edit_rapport.php"> Retour </a></div>';
		include("../include/footer.php");
		exit;
	}
	/*$cheminModele = $_SERVER['DOCUMENT_ROOT']."edf_v8/template/".$resultat[0];
	if(strstr(PHP_OS,'WIN')){
		$cheminModele = str_replace("/", "\\", $cheminModele);
	}*/
	
//$file_name = '../rapports/Rapport_Client_' . $_POST['numero_affaire'];
			//Définition de l'extension Word
			$extension_word = '.doc';
			//Définition de l'extension PDF
			$extension_pdf = '.pdf';
	$arraymsg = generateRapport($template,$file_name);                            //LIGNE 147
generate_common.php :
function mergeODT($template,$dest){
	if(checkTemplate($template)){
		//echo"generate_merge.php?template=".$template."&filename=".$dest;
		//include("generate_merge.php?template=".$template."&filename=".$dest);
		merge(substr($template, 0,-4).".odt",$dest);                                                //LIGNE 181
	}
	else return false;
}

/**
 * 
 * Fonction qui vérifie si le modèle existe, effectue la fusion si possible, et génère les fichiers .doc et .pdf qui correspondent.
 * @param $template Le modèle à utiliser
 * @param $dest Le nom du fichier temporaire
 * @return <array(Numero, Message) Contient un numéro (erreur, succès) et un message.
 */
function generateRapport($template,$dest){
	mergeODT($template,$dest);                                                  //LIGNE 194
	$msgarray = generateFromODT($dest);
	return $msgarray;
generate_merge.php:
function merge($template,$filename){
	global $rapport_param;
	global $merge_param;
	global $list_param;
//Vérification si le modèle existe
//$template = $_GET['template'];
//$filename = $_GET['filename'];
//echo $filename;
if($filename == "" || !file_exists($template)){
	exit(0);
}
else{
	//echo "fileFound";
}
//Ouverture du modèle
if(stristr(PHP_OS, "win")){
	$filename = str_replace("/", "\\", $rapport_param['root'].substr($filename,3));
	$template = str_replace("/", "\\", $rapport_param['root'].substr($template,3));
}else{
	$filename = $rapport_param['root'].substr($filename,3);
	$template = $rapport_param['root'].substr($template,3);
}

$odf = new odf($template);                                                        //LIGNE 52
Qu'est ce qui pourrait mal fonctionner ? Parce que là, sérieusement je ne comprend pas grand chose à tout ça..