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

Bibliothèques et frameworks PHP Discussion :

PHPExcel et PDF


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Par défaut PHPExcel et PDF
    Bonjour,
    Je viens chercher votre aide car je rencontre des soucis avec PHPExcel.
    Je n'arrive pas à enregistrer un fichier xlsx au format pdf.
    J'ai pourtant essayer de suivre la doc.
    https://github.com/PHPOffice/PHPExce...and-Writing.md
    Mais j'ai toujours la même erreur :
    Fatal error: Uncaught exception 'PHPExcel_Writer_Exception' with message 'Unable to load PDF Rendering library' in C:\xampp\htdocs\autoentrepreneur\public_html\lib\Classes\PHPExcel\Writer\PDF\tcPDF.php:35 Stack trace: #0 C:\xampp\htdocs\autoentrepreneur\public_html\lib\Classes\PHPExcel\Autoloader.php(82): require() #1 [internal function]: PHPExcel_Autoloader::Load('PHPExcel_Writer...') #2 C:\xampp\htdocs\autoentrepreneur\public_html\lib\Classes\PHPExcel\Writer\PDF.php(70): spl_autoload_call('PHPExcel_Writer...') #3 C:\xampp\htdocs\autoentrepreneur\public_html\generationdevis.php(156): PHPExcel_Writer_PDF->__construct(Object(PHPExcel)) #4 {main} thrown in C:\xampp\htdocs\autoentrepreneur\public_html\lib\Classes\PHPExcel\Writer\PDF\tcPDF.php on line 35
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $rendererName = PHPExcel_Settings::PDF_RENDERER_TCPDF;
    $rendererLibrary = 'tcpdf';
    $rendererLibraryPath = 'lib/Classes/Writer/PDF' . $rendererLibrary;
     
    $getPdfRendererClassFile = 'lib/tcpdf/tcpdf.php';
    PHPExcel_Settings::getPdfRendererPath($getPdfRendererClassFile);
    PHPExcel_Settings::setPdfRenderer($rendererName, $rendererLibraryPath);
    /*Instanciation d'un nouvel objet phpwriter en fonction du fichier excel ouvert*/
    $writer = new PHPExcel_Writer_PDF($excel);
    //sauvegarde et fermeture du fichier avec le nom du client, la date et l'heure
    $writer->save('./devis/' . $donneesclt['NomCli'] . '.' . $donneesclt['PrenomCli'] . '/' . $annee . '-' . $mois . '-' . $jour . '--' . $heure . 'h' . $minute . '' . $donneesclt['NomCli'] . '' . $donneesclt['PrenomCli'] . '.pdf');
    Merci d'avance pour votre aide.

  2. #2
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Par défaut
    Salut,

    Est-ce que tu as installé la librairie que tu essayes d'utiliser ? (cf. http://www.tcpdf.org/installation.php)

    Est-ce que les exemples de TCPDF fonctionnent ?

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Par défaut
    Tout d'abord merci pour ton aide.
    Oui j'ai installer la librairie et les exemples fonctionne.
    J'ai trouvé un exemple de PHPExcel qui doit créer un fichier PDF mais celui-ci ne fonctionne pas.

    Voila le code de l'exemple :
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    <?php
    /**
     * PHPExcel
     *
     * Copyright (C) 2006 - 2014 PHPExcel
     *
     * This library is free software; you can redistribute it and/or
     * modify it under the terms of the GNU Lesser General Public
     * License as published by the Free Software Foundation; either
     * version 2.1 of the License, or (at your option) any later version.
     *
     * This library is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     * Lesser General Public License for more details.
     *
     * You should have received a copy of the GNU Lesser General Public
     * License along with this library; if not, write to the Free Software
     * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
     *
     * @category   PHPExcel
     * @package    PHPExcel
     * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
     * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt	LGPL
     * @version    1.8.0, 2014-03-02
     */
     
    /** Error reporting */
    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);
    date_default_timezone_set('Europe/London');
     
    define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');
     
    date_default_timezone_set('Europe/London');
     
    include "05featuredemo.inc.php";
     
    /** PHPExcel_IOFactory */
    require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php';
     
     
    //	Change these values to select the Rendering library that you wish to use
    //		and its directory location on your server
    //$rendererName = PHPExcel_Settings::PDF_RENDERER_TCPDF;
    //$rendererName = PHPExcel_Settings::PDF_RENDERER_MPDF;
    $rendererName = PHPExcel_Settings::PDF_RENDERER_DOMPDF;
    //$rendererLibrary = 'tcPDF5.9';
    //$rendererLibrary = 'mPDF5.4';
    $rendererLibrary = 'domPDF0.6.0beta3';
    $rendererLibraryPath = '/php/libraries/PDF/' . $rendererLibrary;
     
     
    echo date('H:i:s') , " Hide grid lines" , EOL;
    $objPHPExcel->getActiveSheet()->setShowGridLines(false);
     
    echo date('H:i:s') , " Set orientation to landscape" , EOL;
    $objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
     
     
    echo date('H:i:s') , " Write to PDF format using {$rendererName}" , EOL;
     
    if (!PHPExcel_Settings::setPdfRenderer(
    		$rendererName,
    		$rendererLibraryPath
    	)) {
    	die(
    		'NOTICE: Please set the $rendererName and $rendererLibraryPath values' .
    		EOL .
    		'at the top of this script as appropriate for your directory structure'
    	);
    }
     
     
    $callStartTime = microtime(true);
     
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
    $objWriter->setSheetIndex(0);
    $objWriter->save(str_replace('.php', '_'.$rendererName.'.pdf', __FILE__));
    $callEndTime = microtime(true);
    $callTime = $callEndTime - $callStartTime;
    echo date('H:i:s') , " File written to " , str_replace('.php', '_'.$rendererName.'.pdf', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL;
    echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL;
    // Echo memory usage
    echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL;
     
     
    // Echo memory peak usage
    echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL;
     
    // Echo done
    echo date('H:i:s') , " Done writing files" , EOL;
    echo 'File has been created in ' , getcwd() , EOL;
    J'ai le message
    NOTICE: Please set the $rendererName and $rendererLibraryPath values at the top of this script as appropriate for your directory structure
    Donc les renderername et rendererlibrarypath ne sont pas renseigner correctement.

    Si j'arrive à faire fonctionner l"exemple je devrais pouvoir l'adapter à mon cas.
    Est-ce que quelqu'un sait ce que je doit mettre dans ces variable?

  4. #4
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Par défaut
    Donc problème de chemin vers les dossiers/fichiers qui sont utilisés.
    Est-ce que ça marche en modifiant la ligne 51 comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $rendererLibraryPath = dirname(__FILE__). '/../Classes/PHPExcel/IOFactory.php';
    (à adapter en fonction de ton arborescence de fichiers bien entendu)

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Par défaut
    Oui c'est cela.
    En faite le $rendererLibrary correspond au nom du dossier qui contient la librairie tcpdf et le $rendererLibraryPath correspond au chemin vers ce fichier.
    J'ai donc mis le code suivant dans le cas de l'exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php';
    $rendererName = PHPExcel_Settings::PDF_RENDERER_TCPDF;
    $rendererLibrary = 'tcpdf';
    $rendererLibraryPath = dirname(__FILE__) . '/../../' . $rendererLibrary;
    Et la les chemins sont bon.

    J'ai maintenant bien un fichier pdf qui est générer mais par contre le rendu n'est pas satisfaisant du tout.
    La mise en page n'est pas bonne et de plus les bordures de chaque cases de mon fichier excel d'origine sont affichés.

    J'ai essayer d'arranger cela en m'inspirant des exemples avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $writer->SetCreator('PDF_CREATOR');
    $writer->SetAuthor('Benoit Dupin');
    $writer->SetTitle('Devis');
    $writer->SetSubject('Devis');
    $writer->SetKeywords('Devis, PDF');
    $writer->setMargins(0, 0);
    $writer->setPrintHeader(false);
    $writer->setPrintFooter(false);
    $writer->SetAutoPageBreak(false, 0);
    $writer->SetFont('', '', '', '', 'false');
    Mais pour chaque méthode appeler j'ai l'erreur :
    Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'PHPExcel_Writer_PDF_tcPDF' does not have a method 'SetCreator' in C:\xampp\htdocs\autoentrepreneur\public_html\lib\Classes\PHPExcel\Writer\PDF.php on line 87
    Il ne trouve pas les méthode. Je ne sait pas pourquoi.
    Si quelqu'un à une idée elle est la bienvenue.

    Merci d'avance

  6. #6
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Par défaut
    Est-ce ça pourrait venir du fait que tu essayes d'utiliser des méthodes de TCPDF sur un objet qui est de type PHP_Excel ?

    Est-ce que tu peux poster ton code stp ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PHPExcel enregistrement fichier corrompu pdf xlsx
    Par bjo393 dans le forum Langage
    Réponses: 1
    Dernier message: 06/05/2013, 10h25
  2. PHPExcel problème PDF
    Par bjo393 dans le forum Langage
    Réponses: 3
    Dernier message: 03/05/2013, 14h41
  3. [PHP Excel] Problème PDF
    Par philodido dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 30/11/2010, 16h47
  4. [PHP Excel] Génération de PDF lente et incomplète
    Par Florent2 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 06/04/2010, 16h00
  5. [PHP Excel] Conversion vers PDF
    Par basket dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 12/02/2010, 11h23

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