Page 1 sur 1

plusieurs PDF en un seul zip

Posté : 01 déc. 2015, 14:50
par nemka
Bonjour,

Je rencontre un petit problème concernant le téléchargement d'un fichier zippé en utilisant zipfile et la librairie zip.lib.php

j'ai une liste de patient dont on peut imprimer un récapitulatif de son dossier en pdf. Telcharger un seul fichier c'est ok.
Ce que je voudrais c'est imprimer tous les récapitulatifs par patient dans des PDF respectifs . Imaginons 4 patients, quand je clique sur un bouton "télécharger tous les dossiers" il me mettrait 4 fichiers pdf dans un seul zip, puis me le téléchargerait automatiquement.

Pour l'instant je peux télécharger un dossier pour un patient avec ceci :

impressionPDF.php
$patient[$i]=new PatientPDF($pa_id_global[$i]['PA_ID'],$type,$vt_id,$iteration,$_SESSION['langue_crf'],$ut_id);
		$patient[$i]->construire();



dans ma classe crée j'ai bien mon output pour le télécharger

PatientPDF.class.php
public function enregistrer($filename)
   {
      $this->pdf->Output($filename,'F');
   }
mes données que je rentre dans mon pdf se présentent de cette manière

PatientPDF.class.php
$this->pdf=new mPDF('c');
Comment pourrais je faire une boucle pour me mettre par exemple 3 pdf dans mon fichier zip ?

Pour l'instant j'ai ceci qui m'affiche un Document null en error

impressionPDF.php
for($i=0;$i<3;$i++){
		$nom_etude 		= preg_replace('#[^A-Za-z0-9()]+#', '_', (isset($infos_etude['tr_e_nom']) && $infos_etude['tr_e_nom'] != '' ? $infos_etude['tr_e_nom']:$infos_etude['E_NOM']));
		$nom_fichier 	= $nom_etude.'_'.TXT_EXPORT_GLOBAL_CRF;
		$nom_dossier 	= $dossier_path.'/'.$nom_etude.'_'.TXT_EXPORT_GLOBAL_CRF;
		
		ini_set ('max_execution_time',240);
		$patient[$i]=new PatientPDF($pa_id_global[$i]['PA_ID'],$type,$vt_id,$iteration,$_SESSION['langue_crf'],$ut_id);
		$patient[$i]->construire();
		$fp[$i]	= fopen($nom_dossier.'.pdf', "w");
		fwrite($fp[$i], $patient[$i]);
		
		$files[$i] = $nom_fichier.'.pdf';
		$zip =  new zipfile ();
		$fo[$i]=fopen($nom_dossier.'.pdf','r');
		$contenu[$i] = fread($fo[$i], filesize($nom_dossier.'.txt')); //on enregistre le contenu
		
		fclose($fo[$i]);
		$zip->addfile($contenu[$i], $files[$i]); 
		$archive[$i] = $zip->file(); 
		
		@unlink($nom_dossier.'.pdf');
		
		header('Pragma: public');
		header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
		header('Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0');
		header('Content-Transfer-Encoding: none');
		header('Content-Type: application/octetstream; name="'.$nom_fichier.'.zip"');
		header('Content-Disposition: attachment; filename="'.$nom_fichier.'.zip"');
		header('Content-Length: '.filesize($nom_dossier.'_'.$date.'.zip'));
		readfile($nom_dossier.'_'.$date.'.zip');
		@unlink($nom_dossier.'_'.$date.'.zip');
	}
quelqu'un pour m'aider ?