Prestashop : gagnez du temps lors la personnalisation des fichiers pdf ( factures / livraisons … )

Une petite note rapide pour donner et historiser une astuce bien pratique dans le cas ou vous souhaitez faire des modifications sur les fichiers pdfs générés par Prestashop dans l’administration.

Ceci concerne tout ceux qui sont générés  par le controller : controllers/admin/AdminPdfController.php

  • Les factures
  • Les livraisons
  • Commandes fournisseurs

Par défaut le comportement est que le fichier pdf est téléchargé par le navigateur, ce qui devient relativement pénible lorsque les modifications sont assez lourdes et qu’on doit télécharger pleins de fois le fichier pour voir le résultat.

Pour forcer l’affichage du pdf dans le navigateur il vous suffit de modifier la fonction generatePDF du controller  controllers/admin/AdminPdfController.php et de rajouter l’option « I » dans l’appel à la fonction render

public function generatePDF($object, $template)
    {
        $pdf = new PDF($object, $template, Context::getContext()->smarty);
        $pdf->render('I'); //Changement de code ici
    }

Le contenu du fichier pdf sera ensuite affiché directement dans le navigateur ce qui fera gagner un temps précieux dans la visualisation des modifications pdf 🙂

Cette astuce a été testée sur une 1.7.4 et une 1.7.6.x
Elle ne fonctionne plus à partir de la version 1.7.7 car cette partie a été réécrite.

Prestashop 1.7.7 et >

Sur cette version il sera nécessaire de faire la même modification (ajout de l’option « I » ) dans la fonction render pour les fichiers suivants

  • src/Adapter/PDF/CreditSlipPdfGenerator.php
  • src/Adapter/PDF/DeliverySlipPdfGenerator.php
  • src/Adapter/PDF/OrderInvoicePdfGenerator.php
  • src/Adapter/PDF/PDFGenerator.php

Je précise que ces modifications ne sont pas à livrer mais à faire temporairement pour gagner du temps dans vos développements 😉

2 réflexions sur “Prestashop : gagnez du temps lors la personnalisation des fichiers pdf ( factures / livraisons … )”

  1. Bonjour Hervé,
    dans mon module je télécharge mon PDF (facture) dans le dossier download/mymodule

    Dès Prestashop 1.7.7.3 il n’est plus possible visualizer mon file en faisant l’override des controllers controllers/admin/AdminPdfController.php et
    controllers/front/PdfInvoiceController.php, mais il faut utiliser Symfomy et je ne sais plus quoi fare. Peux-tu m’aider à ce propos? Merci beaucop

    1. Bonjour Davide,

      Effectivement cet astuce ne fonctionne plus à partir de la version 1.7.7 de Prestashop.
      Je vais rajouter cette information.
      Pour l’instant je n’ai pas d’alternative sur cette version.

      Cordialement,
      Hervé

Répondre à herve Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *