Partage
  • Partager sur Facebook
  • Partager sur Twitter

Génération et ouverture d'un PDF avec TCPDF

Sujet résolu
    23 janvier 2020 à 23:34:38

    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:

    %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©¶

    Ci-joint mon code :

    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;
    }

    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:

    $.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);
    },

    Merci d'avance pour votre aide,

    Cordialement,

    -
    Edité par Guilderoy 23 janvier 2020 à 23:44:09

    • Partager sur Facebook
    • Partager sur Twitter
      25 janvier 2020 à 11:15:29

      C'est résolu, l'export étant appelé d'un appel AJAX, le fichier est donc récupéré par le côté JS. Je ne peux pas envoyer un message de réponse et en même temps le fichier au client.
      • Partager sur Facebook
      • Partager sur Twitter

      Génération et ouverture d'un PDF avec TCPDF

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown