Utilisation de PDF Merger

Utilisation de PDF Merger - PHP - Programmation

Marsh Posté le 12-02-2021 à 18:48:51    

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.

Reply

Marsh Posté le 12-02-2021 à 18:48:51   

Reply

Marsh Posté le 12-02-2021 à 20:56:42    

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 Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 15-02-2021 à 18:29:18    

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 ?

Reply

Marsh Posté le 15-02-2021 à 18:32:20    


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

Reply

Marsh Posté le 15-02-2021 à 18:37:46    

"'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 Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 15-02-2021 à 20:15:57    

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.

Reply

Marsh Posté le 15-02-2021 à 20:20:40    

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 Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 16-02-2021 à 00:12:49    

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).

Reply

Marsh Posté le 16-02-2021 à 09:48:12    

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 Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 17-02-2021 à 17:56:12    

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 !!!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed