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

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 53
    Points
    53
    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 497
    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 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Bonjour,

    La génération concerne plusieurs sheet ?

    Met nous un peu de code !

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 53
    Points
    53
    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 497
    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 497
    Points : 12 600
    Points
    12 600
    Par défaut
    OK, essaye sans l'image!

  5. #5
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 53
    Points
    53
    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 497
    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 497
    Points : 12 600
    Points
    12 600
    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;

  7. #7
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    Désolé pour le temps de recherche, mais l'erreur est plutôt dans mon copier/coller vers le forum, car mon code est correct.

    Il n'y a pas des options d'insertion d'image ?
    Car l'image est tout en haut à gauche, la première ligne de texte apparait correctement à droite de l'image, mais ensuite, la seconde ligne, qui devrait juste en dessous de le précédente mais toujours à droite de l'image se retrouve plusieurs "lignes" plus bas, en tout cas plus bas que l'image.

    Suis-je clair ?

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    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 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Bonjour,
    Je reviens de vacances et je pense a toi .
    Ton image prend l'espace de quatre cellules , as tu pensé de faire un "merge" de ces 4 cellules avant d'insérer la photo ?

    C'est juste pour tenter quelque chose !

  9. #9
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    Désolé pour le retard. Je suis parti sur FPDF pour faire mon document, mais que ça ne nous empêche pas de comprendre.

    Non, je n'ai pas fait de merge des cellules. Je me suis juste dit que l'image serait déconnectée des cellules.

    Je veux bien tenter le merge, mais alors comment dois-je faire ?

  10. #10
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    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 497
    Points : 12 600
    Points
    12 600
    Par défaut
    comme ceci, a adapter à ton cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sheet->mergeCells('A1:B2');

  11. #11
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    Ca y est, j'ai enfin pris le temps de faire l'essai et ça fonctionne.
    Le mergecells, sur les cellules qui couvrent la dimension de l'image, permet de remettre le fichier dans son aspect normal.

    Merci

  12. #12
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    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 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Content pour toi

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/02/2019, 12h18
  2. Access vers Excel puis vers PDF
    Par adelsunwind dans le forum IHM
    Réponses: 7
    Dernier message: 09/05/2009, 08h36
  3. Conversion Excel vers pdf en Delphi
    Par toutou2000 dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 14/11/2008, 18h31
  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, 23h27
  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, 11h41

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