4 votes

Comment surmonter l'ERREUR TCPDF : [Image] Impossible de récupérer l'image ?

Je suis en train d'utiliser tcpdf v5.9.144

Je suis en train d'essayer de télécharger un PDF avec les entrées données. Si les images ont des liens incorrects, cela ne fonctionne pas. Bien sûr, cela fonctionne comme prévu :-)

Mais mon problème est, y a-t-il un moyen de continuer sans afficher l'ERREUR FATALE ?

Remarque: Je ne pense pas que commenter le code d'erreur soit la bonne solution.

6voto

P.scheit Points 890
class ErrorIgnoringTCPDF extends TCPDF {

public function Error($msg) {
   // unset all class variables
   $this->_destroy(true);

   // do whatever you want with $msg
   print $msg;
}

}

cela ignorera toutes les erreurs dans votre PDF. Mais vous ne voulez vraiment pas faire ça! Votre erreur est déclenchée lorsque la librairie n'est pas capable de charger l'image (physiquement) qu'elle veut afficher dans le PDF. Vous feriez mieux de commencer à valider les images utilisées dans le PDF pour vous assurer que l'erreur en elle-même n'est pas déclenchée. Je n'ai aucune idée de ce que TCPDF fait avec une image non chargeable. Je supposerais que cela casse.

pensez à surcharger la fonction d'image et à tester l'existence de l'image lorsqu'elle est ajoutée. Ensuite, lancez une exception et gérez l'erreur quelque part plus haut dans la pile de votre application

1voto

Adam Knowles Points 492

Ignorer l'erreur ne serait pas génial. TCPDF, lorsqu'on lui demande d'utiliser une image inexistante, se contentera simplement de 'mourir()', affichant une erreur à l'écran. Cela signifie que cela est en dehors du système global de gestion des exceptions/erreurs de mon application.

Merci pour la question et la solution proposée. Je vais l'utiliser dans mon projet Symfony2. Cela fait en sorte que tout problème avec TCPDF génère une Exception à gérer par le framework, puisque TCPDF ne lance pas d'Exceptions de lui-même. Je l'utilise en conjonction avec le bundle Symfony2 de WhiteOctober qui vous permet d'étendre la classe TCPDF de cette manière.

namespace Acme\MyBundle\ClassExtensions;

class ExceptionThrowingTCPDF extends \TCPDF {

    public function Erreur($msg) {
       // Nettoyage : unset des variables de classe
       $this->_destroy(true);

       throw new \Exception('La génération du PDF a échoué : ' . $msg);
    }

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X