par
nemka » 01 déc. 2015, 14:50
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 ?
Bonjour,
Je rencontre un petit problème concernant le téléchargement d'un fichier zippé en utilisant zipfile et la librairie [u]zip.lib.php[/u]
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
[php]$patient[$i]=new PatientPDF($pa_id_global[$i]['PA_ID'],$type,$vt_id,$iteration,$_SESSION['langue_crf'],$ut_id);
$patient[$i]->construire();[/php]
dans ma classe crée j'ai bien mon output pour le télécharger
PatientPDF.class.php
[php]public function enregistrer($filename)
{
$this->pdf->Output($filename,'F');
}[/php]
mes données que je rentre dans mon pdf se présentent de cette manière
PatientPDF.class.php
[php]$this->pdf=new mPDF('c');[/php]
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
[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');
}[/php]
quelqu'un pour m'aider ?