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 :

[PHP Excel] Conversion vers PDF


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Par défaut [PHP Excel] Conversion vers PDF
    Bonjour,

    J'ai utilisé le tutoriel et la classe MaitrePylosExcel pour fabriquer un fichier Excel5. J'ai réussi à le mettre en forme, pas de souci.

    J'ai alors voulu tout simplement utiliser la sortie paramétrée 'PDF' de la fonction affiche() pour pouvoir ensuite envoyer mon fichier par email (je ne suis pas encore arrivé jusque là...), mais là, horreur, toute la mise en page est à revoir.
    Plus de bordure aux cellules, l'image insérée fausse la mise en page, la taille du texte semple différente, et.

    Bref, comment faire pour formater un fichier qui s'affichera correctement en PDF alors qu'il est correct en Excel5 ?

    Est-ce normal ?
    Faut-il faire attention à quelque chose en particulier ?

    Merci pour votre aide

  2. #2
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour,

    La génération concerne plusieurs sheet ?

    Met nous un peu de code !

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Par défaut
    Bonjour,

    Je ne génère qu'une seule feuille.

    J'ai un controller qui crée le fichier via une fonction de création, et qui l'affiche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $workbook = Class_Paiement::getInstance()->preparerFactureXLS();
    $workbook->affiche('PDF','Facture');
    La fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function preparerFactureXLS()
    {
    $workbook = new MaitrePylosExcel();
    $sheet = $workbook->getActiveSheet();
     
    // mentions association
    $sheet->setCellValue('C1', 'Association Tartempion');
    $sheet->setCellValue('C2', 'Association Loi 1091');
    ...
    Je remplie ma feuille avec un certain nombre de données, dont une image :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // image
    $objDrawing = new PHPExcel_Worksheet_
    $objDrawing->setName('PHPExcel logo');
    $objDrawing->setDescription('Image');
    $objDrawing->setPath('ressources/image.gif');
    $objDrawing->setHeight(100);
    $objDrawing->setCoordinates('A1');
    $objDrawing->setOffsetX(0);
    $objDrawing->setWorksheet($sheet);
    Puis je formate pour que ça s'affiche joliment :
    Par défaut :
    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
     
    // mise en forme
    $sheet->getDefaultStyle()->applyFromArray(array(
      'font'=>array(
        'name' => 'Arial',
        'size' => 8,
        'bold' => false),
      'alignment'=>array(
        'horizontal'=>PHPExcel_Style_Alignment::HORIZONTAL_LEFT,
        'wrap' => false,
        'shrinkToFit'=> false),
      'borders' => array(
        'allborders'=>array(
          'style' => PHPExcel_Style_Border::BORDER_DASHDOT))
        )
      );
    Largeurs de colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sheet->getColumnDimension('A')->setWidth(12);
    $sheet->getColumnDimension('B')->setWidth(15);
    ...
    Hauteur de ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sheet->getRowDimension('1')->setRowHeight(8.5);
    $sheet->getRowDimension('2')->setRowHeight(8.5);
    ...
    Exemple de bordures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $sheet->duplicateStyleArray(
      array(
      'borders' => array(
        'top' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
        ),
        'bottom' => array(
          'style' => PHPExcel_Style_Border::BORDER_THIN
          )
        )
      ),
      'B27:F27'
      );
    Puis mise en page finale et retour de $workbook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $vPageSetup = new PHPExcel_Worksheet_PageSetup;
    $vPageSetup->setPaperSize(9);
    $vPageSetup->setPrintAreaByColumnAndRow(0, 1, 7, 52);
    $vPageSetup->setFitToPage(true);
     
    $sheet->setPageSetup($vPageSetup);
     
    return $workbook;
    Le PDF est généré sur deux pages (coupure à peu près au milieu du document).

    J'espère que ma description et ces bouts de code vous permettront de m'aider.

  4. #4
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    OK, essaye sans l'image!

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Par défaut
    Bonsoir,

    C'est bien mieux sans l'image.

    Et maintenant, comment ajoute-t-on l'image sans tout altérer ?
    Avez-vous une idée ?
    Comme il s'agit de l'édition d'une facture, il est impératif que le logo soit présent.

    D'avance merci

  6. #6
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Dans ton code ici(image)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $objDrawing = new PHPExcel_Worksheet_
    tu as une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $objDrawing = new PHPExcel_Worksheet_Drawing;

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/02/2019, 11h18
  2. Access vers Excel puis vers PDF
    Par adelsunwind dans le forum IHM
    Réponses: 7
    Dernier message: 09/05/2009, 07h36
  3. Conversion Excel vers pdf en Delphi
    Par toutou2000 dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 14/11/2008, 17h31
  4. [COM] Conversion WORD vers PDF sous PHP sans COM ?
    Par pdtor dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 31/01/2007, 22h27
  5. [FOP] Problème de conversion xml/xsl vers pdf
    Par Shadow aok dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 02/03/2006, 10h41

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