Bonjour à tous,
J'essaye d'effectuer l'export d'une liste en PHP grâce à la librairie TCPDF. La génération du PDF s'effectue correctement, en revanche lorsque que je veux ouvrir le PDF dans le navigateur lors de la création avec l'option $bRes = $oPdf->Output( $fileurl,'I'); , je n'ai aucun retour ni aucune erreur dans les logs.
En revanche je constate que le fichier encodé sort vers la réponse de ma requête http lorsque je regarde dans ma console dev:
Ci-joint mon code :%PDF-1.7
%âãÏÓ
7 0 obj
<< /Type /Page /Parent 1 0 R /LastModified (D:20200123232709+01'00') /Resources 2 0 R /MediaBox [0.000000 0.000000 595.276000 841.890000] /CropBox [0.000000 0.000000 595.276000 841.890000] /BleedBox [0.000000 0.000000 595.276000 841.890000] /TrimBox [0.000000 0.000000 595.276000 841.890000] /ArtBox [0.000000 0.000000 595.276000 841.890000] /Contents 8 0 R /Rotate 0 /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Annots [ 6 0 R ] /PZ 1 >>
endobj
8 0 obj
<</Filter /FlateDecode /Length 611>> stream
xíXÝOÛ0Ï_qoºþcwoÒ6A<´ÄTAiJ´ýõs¦uh(]B?(ueÕ:ßïww¾ØÆ¬¤áT÷{¸ºÑî'º÷*/.´ð¨{_]×|\FRðÌ`vJ81nsGÀmhµ¹6EÖ¹þÕ¶`²H
Ô,¨^]ÁÏ\sCM'Gr'Qæ8C˳Û+¸ZI!l&ApvÍ$¤Z6ÏùÙö¦:ùxGr~ ÐFvlÌ!Tnô@cæ"ÁFJ3a>UlÌ0Em¦§ÙÔ0kÀ]øËÄ<zþìg«\´UB/¸^ͧÇy<qôzxJKõÕ,¬ÙgõÐõàjï{§ èBàµîi&t^×õÑí7¸Òѧ¹ËÄ×!ë&jYQ+ÒËQûÑ»WÉ»×Û
½ãWí-j;È!rk©¶
De plus lors d'appel de l'export j'effectue une requete ajax avec Jquery vers mon url /exportToPDF géré par mon routeur côté php:
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 public static function exportToPdf($aParam){ if(isset($aParam['id_list']) && !empty($aParam['id_list'])){ require_once('medias/libraries/tcpdf/tcpdf.php'); $aRes = \models\mylists\mylists::getItemsFromIDList($aParam['id_list']); $tbl=""; $tbl_header = '<table border="1"> <thead> <tr> <th class="lead" scope="col"><strong>Nom de la liste</strong></th> <th class="lead" scope="col"><strong>Utilisateur</strong></th> <th class="lead" scope="col"><strong>Objet</strong></th> </tr> </thead>'; $tbl_footer = '</table>'; $oPdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); $oPdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); $oPdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); $oPdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); foreach($aRes as $row) { $tbl .= "<tr><td>".$row['username']."</td>"; $tbl .= "<td>".$row['prenom']."</td>"; $tbl .= "<td>".$row['name']."</td>"; $tbl .= "</tr> "; } $oPdf->AddPage(); $oPdf->writeHTML($tbl_header . $tbl . $tbl_footer, true, 0, true, 0); $oPdf->lastPage(); $fileurl = $_SERVER['DOCUMENT_ROOT']."medias/pdf/filename.pdf"; $bRes = $oPdf->Output( $fileurl,'FI'); $aResponse["message"] = "la liste a bien été exportée"; } return $aResponse; }
Merci d'avance pour votre aide,
Code js : 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 $.ajax({ url : '/mylists/exportToPdf', type : 'POST', data: aParam, dataType:'JSON', success : function(oResult, statut){ var divResponse=""; $("div.response").show(); if(oResult.message != undefined){ divResponse = "<div class='alert alert-success' role='alert'>"+oResult.message+"</div>"; } else divResponse = "<div class='alert alert-danger' role='alert'>"+oResult.message_err+"</div>"; $("div.response").append(divResponse); setTimeout(function() { $('div.response').fadeOut('slow'); $('div.response').empty(); }, 7000); },
Cordialement,
Partager