Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
1493 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Utilisation de PDF Merger

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Utilisation de PDF Merger

n°2375766
michgoarin
Posté le 12-02-2021 à 18:48:51  profilanswer
 

Bonjour,
J'utilise depuis aujourd'hui PDF Merger.
 

Code :
  1. <?php
  2. $pdf = new PDFMerger;
  3. $pdf->addPDF($lien_devis_original, 'all')
  4. ->addPDF($lienBDC, 'all')
  5. ->merge('file', $lien_devis);
  6. ?>


 
Je souhaiterai vérifier que l'opération s'est bien déroulée.
 
Auriez vous une idée ?
 
Par avance merci.

mood
Publicité
Posté le 12-02-2021 à 18:48:51  profilanswer
 

n°2375788
rufo
Pas me confondre avec Lycos!
Posté le 12-02-2021 à 20:56:42  profilanswer
 

Tu vérifies l'existence du fichier généré. Sinon, la fonction ne renvoie pas de code de retour ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2375802
B4X
kebab-case
Posté le 13-02-2021 à 10:41:15  profilanswer
 

Il faudra d'abord définir ce que signifie pour toi une opération qui s'est bien déroulée.
Il faudra ensuite p-ê poster un lien vers le repo de ta lib parce qu'elle n'est pas standard et qu'il existe donc probablement whatmille forks.
Dans l'immédiat, je dirais qu'il suffit de compter le nombres de pages pour s'assurer qu'il est égal à la somme de celui de chacun des fichiers mergés, ici ton devis + bdc.
PdfInfo est parfait et très rapide/performant dans ce contexte. Tu peux aussi le faire en PHP (Google "php count pdf pages" ).


---------------
In vanitas veritas.
n°2375895
michgoarin
Posté le 15-02-2021 à 18:29:18  profilanswer
 

Bonjour,
Oui effectivement, je souhaiterai que l'utilisateur soit averti que le fichier a bien été créé.
 
Je découvre un autre soucis. Je souhaiterai concaténer deux fichiers :
- Un fichier hébergé sur le serveur
- Un fichier uploader par un utilisateur
 
Ci-dessous ma page de test

Code :
  1. <?php
  2. use PDFMerger\PDFMerger;
  3. require_once 'PDFMerger.php';
  4. if ($_POST['enregistrer']=="Générer une ligne Devis" ){
  5.    
  6.      // On traite le document télécharger
  7.  if(!empty($_FILES['devis_original']['tmp_name']) AND is_uploaded_file($_FILES['devis_original']['tmp_name']))
  8.  {
  9.   // vérifier si le dossier existe
  10.   if (!is_dir("devis_original/" ) == true)
  11.   {
  12.    mkdir ("devis_original/", 0777,true);
  13.   }
  14.   // On définit notre répertoire cible
  15.   $repertoireDevis="devis_original/";
  16.   $nom_devis="devisOriginal"; // Ce nom variera en fonction de l'id de la table `devis`
  17.   // On va vérifier la taille du fichier en ne passant pas par $_FILES['devis_original']['size'] pour éviter les failles de sécurité
  18.   if(filesize($_FILES['devis_original']['tmp_name'])<100000000){
  19.    // On créé un tableau contenant les extensions autorisées
  20.    $extDocOk = array('.pdf','.PDF');
  21.    // On lit l'extension du fichier
  22.    $fileDocExt = substr($_FILES['devis_original']['name'],-4,4);
  23.    // Si c'est une image on traite le fichier uploadé
  24.    if(in_array($fileDocExt,$extDocOk)){
  25.     // On définit le lien à insérer dans la base
  26.     $lien_devis=$repertoireDevis.$nom_devis.$fileDocExt;
  27.     //On vérifie si le dossier de destination est writable
  28.     if(!is_writable($repertoireDevis))
  29.     die('Impossible d\'écrire dans le répertoire cible.');
  30.     //Copie le fichier dans le répertoire de destination
  31.     if(move_uploaded_file($_FILES['devis_original']['tmp_name'], $lien_devis)){
  32.            $size_doc=1;
  33.                                                //Le fichier a été uploadé correctement
  34.     }
  35.     else{//Erreur
  36.            $mauvaisFormat[]='Erreur lors de la copie du fichier';
  37.     }
  38.    }
  39.    else
  40.    {
  41.    $mauvaisFormat[]= "Le document doit être en .doc ou .pdf";
  42.    }
  43.   }
  44.   else
  45.   {
  46.   $mauvaisFormat[]= 'Le fichier est trop gros, veuillez compresser le fichier !!!';
  47.   }
  48.  }
  49.  else
  50.  {
  51.   $size_doc=0;
  52.   $lien_devis="";
  53.   $tabloVide[] ="Veuillez sélectionner un fichier au format PDF !!!";
  54.  }
  55.    
  56.     // Début da la procédure de concaténation des fichiers PDF
  57.     ob_start();
  58.     $pdf = new PDFMerger;
  59.    
  60.  
  61.    
  62.     $pdf->addPDF('documents/bon_de_commande/bdc12269-02-2021-8198.pdf', 'all')
  63.      ->addPDF($lien_devis, 'all')
  64.      ->merge('file', $repertoireDevis.'devis-bdc-test15022021.pdf');
  65.     ob_end_clean();
  66.    
  67.     // Fin de la procédure de concaténation des fichiers PDF
  68.    
  69.     // On vérifie la présence de $pdf
  70.     if ($pdf){echo "C'est Good !!!";}else{echo "C'est pas Good !!!";}
  71. }
  72. ?>
  73. <!DOCTYPE HTML>
  74. <html>
  75. <head>
  76.  <title>Générer Ligne Comptable</title>
  77.  <meta charset="utf-8" />
  78.  <meta name="viewport" content="width=device-width, initial-scale=1" />
  79. </head>
  80. <body class="homepage">
  81.         <form action='sample.php' method='post' name='formDevis' id='loginform' enctype='multipart/form-data'>
  82.             <label for 'devis_original'>Devis original (format .pdf) :</label>
  83.             <input type="file" name="devis_original" /><br />
  84.             <input style="margin-bottom:2em;" class="actions style1" type="submit" name="enregistrer" value="Générer une ligne Devis" />
  85.         </form>
  86.     </body>
  87. </html>


 
A la vérification, je n'ai pas le fichier téléchargé.
 
Si vous avez une idée ?

n°2375896
michgoarin
Posté le 15-02-2021 à 18:32:20  profilanswer
 

B4X a écrit :

Il faudra d'abord définir ce que signifie pour toi une opération qui s'est bien déroulée.
Il faudra ensuite p-ê poster un lien vers le repo de ta lib parce qu'elle n'est pas standard et qu'il existe donc probablement whatmille forks.
Dans l'immédiat, je dirais qu'il suffit de compter le nombres de pages pour s'assurer qu'il est égal à la somme de celui de chacun des fichiers mergés, ici ton devis + bdc.
PdfInfo est parfait et très rapide/performant dans ce contexte. Tu peux aussi le faire en PHP (Google "php count pdf pages" ).


 
 
Merci. je vais vérifier avec "php count pdf pages"

n°2375897
rufo
Pas me confondre avec Lycos!
Posté le 15-02-2021 à 18:37:46  profilanswer
 

"'documents/bon_de_commande/bdc12269-02-2021-8198.pdf'" --> T'es sûr de ton coup pour le chemin de ce fichier ? Que c'est un chemin qui est à la fois accessible depuis ton serveur web (donc qui se trouve dans le /www/) et comme tu as exprimé ton chemin en relatif, ça support que /documents/ est un répertoire situé au même niveau que ton script php qui fait le boulot.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2375899
michgoarin
Posté le 15-02-2021 à 20:15:57  profilanswer
 

rufo a écrit :

"'documents/bon_de_commande/bdc12269-02-2021-8198.pdf'" --> T'es sûr de ton coup pour le chemin de ce fichier ? Que c'est un chemin qui est à la fois accessible depuis ton serveur web (donc qui se trouve dans le /www/) et comme tu as exprimé ton chemin en relatif, ça support que /documents/ est un répertoire situé au même niveau que ton script php qui fait le boulot.


 
Rufo,
Oui le chemin 'documents/bon_de_commande/bdc12269-02-2021-8198.pdf' est correct. D'ailleurs à la concaténation, c'est le seul fichier qui apparaît dans le document produit.
Je me demande si le fichier téléchargé est déjà sur le serveur au moment où je souhaite le concatener ou alors il faut attendre la fin d’exécution de la page pour que le fichier soit réellement sur le serveur. Cela pourrait expliquer que cette page n'est jamais fusionnée.
Je galère depuis quelques jours sur ce fichier.
  :??:  :o  
Merci pour le coup de main.

n°2375901
rufo
Pas me confondre avec Lycos!
Posté le 15-02-2021 à 20:20:40  profilanswer
 

Du coup, est-ce que le répertoire où tu mets les fichiers uploadés est bon ? T'as vérifié que les fichiers atterrissaient au bon endroit ?
Et pourquoi tu fais du ob_start() et clean() ?
 
Comment t'es censé récupérer le fichier concaténé ? En download ? Si oui, il manque les header pour forcer le download au navigateur :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2375902
michgoarin
Posté le 16-02-2021 à 00:12:49  profilanswer
 

rufo a écrit :

Du coup, est-ce que le répertoire où tu mets les fichiers uploadés est bon ? T'as vérifié que les fichiers atterrissaient au bon endroit ?
Et pourquoi tu fais du ob_start() et clean() ?
 
Comment t'es censé récupérer le fichier concaténé ? En download ? Si oui, il manque les header pour forcer le download au navigateur :/


Rufo,
Le fichier téléchargé par l'utilisateur est bien uploadé au bon endroit et le fichier créé par le TCPDF (PDFMerger) va bien au bon endroit.
L'ob_start() et clean() évitent les erreurs de type "warning: A non-numeric value encountered in /htdocs/tcpdf/tcpdi_parser.php on line..." (voir : https://stackoverflow.com/questions [...] p-7-tcpdf)
 
Je récupère le fichier directement sur le serveur (via un lien sur le site sur une autre page).

n°2375905
rufo
Pas me confondre avec Lycos!
Posté le 16-02-2021 à 09:48:12  profilanswer
 

Tu devrais peut-être t'intéresser à ce warning et comprendre pourquoi il survient alors qu'a priori, ça ne devrait pas, non ?
 
Edit : tu peux pas faire plutôt @$pdf->addPDF ?


Message édité par rufo le 16-02-2021 à 09:49:17

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
mood
Publicité
Posté le 16-02-2021 à 09:48:12  profilanswer
 

n°2376024
michgoarin
Posté le 17-02-2021 à 17:56:12  profilanswer
 

Rufo,
Je viens de valider le @pdf->addPDF (et retirer les ob_start() et clean()). Je n'ai effectivement plus de message d'erreur. Merci.
J'ai toujours ce problème de téléchargement par contre... je cherche... je cherche !!!!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Utilisation de PDF Merger

 

Sujets relatifs
Export de feuilles Excel en PDFUtilisation d'API Adobe
[Twig] Utilisation de addLoader()Génération PDF avec Snappy, puis modification Mpdf
[Python] Utilisation d'un code existant[Shell Bash] Utilisation des semaphores pour paralleliser mon script
Utilisation de SQLiteGénération de PDF en java
Python 3.6 extraction de feuille excel pour convertion en PDFCas d'utilisation et description textuelle
Plus de sujets relatifs à : Utilisation de PDF Merger


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR