IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Difficultés avec knpSnappy


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Profil pro
    Informaticien
    Inscrit en
    Octobre 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Octobre 2002
    Messages : 57
    Par défaut Difficultés avec knpSnappy
    Bonjour,

    Je tente de générer un fichier pdf contenant une liste de candidats et pour cela j’utilise le bundle knpSnappy.
    Je l'ai installé via composer :

    composer require knplabs/knp-snappy-bundle

    Voici le contenu de app/config/package/knp_snappy.yaml
    Code yaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    knp_snappy:
        pdf:
            enabled:    true
            binary:     "\"C:\\wkhtmltopdf\\bin\\wkhtmltopdf.exe\""
            options:  
                ## set default settings   
                no-outline: true
                page-size: LETTER
                # recommend to set utf-8 as default encoding
                encoding: UTF-8
        image:
            enabled:    true
            binary:     "\"C:\\wkhtmltopdf\\bin\\wkhtmltoimage.exe\""
            options:    []

    celui du controller
    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
    46
    47
    48
    <?php
    namespace App\Controller;
    use App\Entity\Candidat;
    use App\Entity\Tuteur;
    use App\Form\CandidatType;
    use App\Form\TuteurType;
    use App\Repository\CandidatRepository;
    use Doctrine\Common\Persistence\ObjectManager;
    use Doctrine\ORM\EntityManagerInterface;
    use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\Routing\Annotation\Route;
    use Symfony\Component\HttpFoundation\File\Exception\FileException;
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Knp\Bundle\SnappyBundle\Snappy\Response\PdfResponse;
    use Knp\Bundle\SnappyBundle\Snappy;
    use Knp\Snappy\Pdf;
    use Knp\Bundle\SnappyBundle\DependencyInjection;
    class VanController extends AbstractController
    {
    /**
      * @Route("/listCandidats", name="van_list", methods={"GET"})
      * 
     */                                                                                                                                                                            
     public function listCandidats(Request $request)
         {
            $repo = $this->getDoctrine()->getRepository(Candidat::class);      
            $candidat = $repo->findAll();
            $snappy = $this->get("knp_snappy.pdf");
            //$snappy->setOption("encoding", "UTF-8");
     
            $html = $this->renderView('van/list.html.twig', [
                 'candidats'=> $candidat,
                 'title' => "Welcome to our PDF Test"
              ]);
            $filename = "myfirst_pdf_with_snappy";
     
            return new Response(
                $snappy->getOutputFromHtml($html),
                200,
                array(
                    'Content-Type' => 'application/pdf',
                    'Content-Disposition' => 'inline; filename="'.$filename.'.pdf"'
                )
            );
    }
    }
    A l'exécution j'ai le message d'erreur suivant que je n'arrive pas à comprendre
    ServiceNotFoundException
    HTTP 500 Internal Server Error
    Service "knp_snappy.pdf" not found: even though it exists in the app's container, the container inside "App\Controller\VanController" is a smaller service locator that only knows about the "doctrine", "form.factory", "http_kernel", "parameter_bag", "request_stack", "router", "security.authorization_checker", "security.csrf.token_manager", "security.token_storage", "serializer", "session" and "twig" services. Try using dependency injection instead.
    Je serais ravi d'avoir des idées pour sortir de ce pétrin. Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Developpeur
    Inscrit en
    Juillet 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 102
    Par défaut
    Bonjour, Il semble que cette ligne pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $snappy = $this->get("knp_snappy.pdf");
    Essayez de passer l'objet dans la signature de la méthode :

    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
    public function listCandidats(Request $request, Knp\Snappy\Pdf $snappy)
         {
            $repo = $this->getDoctrine()->getRepository(Candidat::class);      
            $candidat = $repo->findAll();
            //$snappy = $this->get("knp_snappy.pdf");
            //$snappy->setOption("encoding", "UTF-8");
     
            $html = $this->renderView('van/list.html.twig', [
                 'candidats'=> $candidat,
                 'title' => "Welcome to our PDF Test"
              ]);
            $filename = "myfirst_pdf_with_snappy";
     
            return new Response(
                $snappy->getOutputFromHtml($html),
                200,
                array(
                    'Content-Type' => 'application/pdf',
                    'Content-Disposition' => 'inline; filename="'.$filename.'.pdf"'
                )
            );
    }

  3. #3
    Membre confirmé
    Profil pro
    Informaticien
    Inscrit en
    Octobre 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Octobre 2002
    Messages : 57
    Par défaut
    Merci pour votre réaction. J'ai fait tel que vous avez suggéré mais l'erreur suivante :
    Cannot determine controller argument for "App\Controller\VanController::listCandidats()": the $snappy argument is type-hinted with the non-existent class or interface: "App\Controller\Knp\Snappy\Pdf". Did you forget to add a use statement?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Developpeur
    Inscrit en
    Juillet 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 102
    Par défaut
    Est ce que le est toujours présent dans votre controller ?

    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
    public function listCandidats(Request $request, Pdf $snappy)
         {
            $repo = $this->getDoctrine()->getRepository(Candidat::class);      
            $candidat = $repo->findAll();
            //$snappy = $this->get("knp_snappy.pdf");
            //$snappy->setOption("encoding", "UTF-8");
     
            $html = $this->renderView('van/list.html.twig', [
                 'candidats'=> $candidat,
                 'title' => "Welcome to our PDF Test"
              ]);
            $filename = "myfirst_pdf_with_snappy";
     
            return new Response(
                $snappy->getOutputFromHtml($html),
                200,
                array(
                    'Content-Type' => 'application/pdf',
                    'Content-Disposition' => 'inline; filename="'.$filename.'.pdf"'
                )
            );
    }
    En s'assurant que le use mentionné au début est bien là.

    Sinon utilisez l'auto completion de votre IDE pour bien utiliser cette classe.

  5. #5
    Membre confirmé
    Profil pro
    Informaticien
    Inscrit en
    Octobre 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Octobre 2002
    Messages : 57
    Par défaut
    le
    existe bien dans le controller.
    Et quand je porte cette modif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public function listCandidats(Request $request, Pdf $snappy)
    C'est le message d'erreur qui revient
    Service "knp_snappy.pdf" not found: even though it exists in the app's container, the container inside "App\Controller\VanController" is a smaller service locator that only knows about the "doctrine", "form.factory", "http_kernel", "parameter_bag", "request_stack", "router", "security.authorization_checker", "security.csrf.token_manager", "security.token_storage", "serializer", "session" and "twig" services. Try using dependency injection instead.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Developpeur
    Inscrit en
    Juillet 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 102
    Par défaut
    Je te suggère d'aller voir ce sujet qui traite du même problème que le tiens
    https://www.developpez.net/forums/d1...ce-non-trouve/

Discussions similaires

  1. [SSIS][2k5]Difficulté avec SSIS
    Par david71 dans le forum SSIS
    Réponses: 9
    Dernier message: 05/01/2006, 19h28
  2. [JS] Difficulté avec le onmouseover...
    Par Pleymo dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/11/2005, 12h09
  3. [VBA] difficultés avec une requête INSERT
    Par elias dans le forum Access
    Réponses: 7
    Dernier message: 06/09/2005, 14h53
  4. Difficultés avec - onchange - !
    Par zakuli dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 20/07/2005, 12h00
  5. Difficultés avec TMenuItem.OnDrawItem
    Par ybruant dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/01/2005, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo