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 :

[Symfony 2.8.0]Générer un fichier from scratch


Sujet :

Symfony PHP

  1. #1
    Invité
    Invité(e)
    Par défaut [Symfony 2.8.0]Générer un fichier from scratch
    Bonjour,

    Qu'est ce que vous me conseilleriez pour générer un fichier from scratch?

    Utiliser wkhtmltopdf ? Générer de l'ODT ? Autre chose ?

    Mon besoin est de générer un fichier à partir de données que j'ai en base. Rien d'extra ordinaire. J'aimerais faire des tableaux dans les pages générées.

    Merci pour vos conseils.

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    ça dépends des données. Si c'est des nombres, pour une analyse visuel pratique je ferai sous la forme excell ou open office talc (un fichier avec des points virgules comme séparateur par exemple)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse.
    Les données ne seront pas que numériques.

    J'ai déjà essayé d'utiliser wkhtmltopdf j'ai l'impression que pour avoir un résultat correct c'est un peu la merde...
    Ensuite j'ai essayé phpoffice/phpword et ça m'a l'air plus accessible.

    Qu'en penses tu?

  4. #4
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    le résultat en pdf ne sera pas le même que sur l'écran, il faut limiter le design pour avoir un résultat correct en pdf. (se limiter à des balises DIV et color en style...) enfin je ne connais pas par coeur mais à toi de faire des tests


    il y a aussi une autre solution en utilisant le media print de CSS. c'est une feuille de style CSS non pas destiné à l'écran mais pour l'impression. (ça évite l'utilisation d"un convertisseur en pdf)

    là, aussi il faut limiter le design.


    sinon, tu fais comme tu veux en pdf, en media print css mais limite absolument la présentation à son plus simple expression possible

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut,

    Merci pour l'info. Je vais regarder ça du coup.

    J'avais commencé à utiliser phpword/php office mais j'ai un petit soucis... Je n'arrive pas à faire télécharger le fichier si je ne l'ai pas sauvegardé au préalable sur le serveur...

    J'ai fouillé dans la doc mais pas trop de solution...

    Voici mon code si quelqu'un a une solution :
    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
     
            $phpWord = new \PhpOffice\PhpWord\PhpWord();
     
            // Adding an empty Section to the document...
            $section = $phpWord->addSection();
     
            $table = $section->addTable();
     
            //Code supplémentaire pour construire le fichier...
            //[...]        
     
            // Saving the document as ODF file...
            $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'ODText');
            $filename = 'qr_codes_rucher_'.$rucher->getNom().'.odt';
            $objWriter->save($filename, 'ODText', true);
     
            $path = $this->get('kernel')->getRootDir(). "/../web/" . $filename;
            $content = file_get_contents($path);        
     
            $response = new Response();
            $response->headers->set('Content-Type', 'application/vnd.oasis.opendocument.text');
            $response->headers->set('Content-Disposition', 'attachment;filename="'.$filename);
            $response->setContent($content);
            return $response;

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Il me semble que j'avais rencontré la même difficulté et que tu coup je fais un truc du genre.

    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
     
         $file = WWW_ROOT . 'data/test.docx';
     
            $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
            $objWriter->save($file);
     
     
            if (!$file) {
                // File doesn't exist, output error
                exit('file not found');
            } else {
                header("Cache-Control: public");
                header("Content-Description: File Transfer");
                header("Content-Disposition: attachment; filename=" . 'catalogue.docx' . "");
                header("Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document");
                header("Content-Transfer-Encoding: binary");
     
                readfile($file);
            }
     
            unlink($file);
     
            exit;

  7. #7
    Invité
    Invité(e)
    Par défaut
    Salut,

    Merci pour ta réponse.
    Je n'ai pas tout compris à ton code. Le fichier est sauvegardé quand même sur le serveur?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Je ne sais pas si c'est très clean, mais j'ai mis un unlink juste avant le return... ça fonctionne!
    J'ai aussi mis les fichiers temporaires dans un /web/generate/ alors qu'il y a sûrement un dossier temporaire qui existe peut être? Ou par session?

Discussions similaires

  1. [WinDev] Générer un fichier .pdf
    Par vaness59199 dans le forum WinDev
    Réponses: 2
    Dernier message: 30/07/2006, 18h52
  2. Réponses: 4
    Dernier message: 02/05/2005, 20h25
  3. Générer des fichiers PDF
    Par bobbafet dans le forum C++Builder
    Réponses: 5
    Dernier message: 29/11/2004, 23h53
  4. Réponses: 2
    Dernier message: 27/05/2004, 00h40
  5. Réponses: 2
    Dernier message: 26/02/2003, 11h47

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