Télécharger deux fichiers PDF et fusion PDF Merger TCPDF

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Télécharger deux fichiers PDF et fusion PDF Merger TCPDF

Re: Télécharger deux fichiers PDF et fusion PDF Merger TCPDF

par Ryle » 17 févr. 2021, 16:35

En fait, le fichier est envoyé sur le serveur avec sa requête. Celui-ci est enregistré par défaut dans un répertoire temporaire et la fonction move_uploaded_file() te permet de déplacer ce fichier depuis ce répertoire temporaire vers le dossier de ton choix. Si celle-ci retourne TRUE, c'est que le fichier a correctement été déplacé.

As-tu des messages d'erreur ?

La concaténation ne devrait-elle pas être dans le if(move_uploaded_file(...)) ? ou à minima contrôler le $size_doc ? (quelle valeur a-t-il au passage, est-il bien à 1 ?)

Télécharger deux fichiers PDF et fusion PDF Merger TCPDF

par michgoarin » 16 févr. 2021, 09:54

Bonjour,

Cette page PHP permet à l'utilisateur de télécharger un fichier PDF grâce au formulaire en ligne. Ce fichier est fusionné avec un fichier présent sur le serveur. Je souhaiterai donc concaténer deux fichiers :

- Un fichier hébergé sur le serveur
- Un fichier uploader par un utilisateur

Ci-dessous ma page de test :

Code : Tout sélectionner

<?php use PDFMerger\PDFMerger; require_once 'PDFMerger.php'; if ($_POST['enregistrer']=="Générer une ligne Devis" ){ // On traite le document télécharger if(!empty($_FILES['devis_original']['tmp_name']) AND is_uploaded_file($_FILES['devis_original']['tmp_name'])) { // vérifier si le dossier existe if (!is_dir("devis_original/" ) == true) { mkdir ("devis_original/", 0777,true); } // On définit notre répertoire cible $repertoireDevis="devis_original/"; $nom_devis="devisOriginal"; // Ce nom variera en fonction de l'id de la table `devis` // On va vérifier la taille du fichier en ne passant pas par $_FILES['devis_original']['size'] pour éviter les failles de sécurité if(filesize($_FILES['devis_original']['tmp_name'])<100000000){ // On créé un tableau contenant les extensions autorisées $extDocOk = array('.pdf','.PDF'); // On lit l'extension du fichier $fileDocExt = substr($_FILES['devis_original']['name'],-4,4); // Si c'est une image on traite le fichier uploadé if(in_array($fileDocExt,$extDocOk)){ // On définit le lien à insérer dans la base $lien_devis=$repertoireDevis.$nom_devis.$fileDocExt; //On vérifie si le dossier de destination est writable if(!is_writable($repertoireDevis)) die('Impossible d\'écrire dans le répertoire cible.'); //Copie le fichier dans le répertoire de destination if(move_uploaded_file($_FILES['devis_original']['tmp_name'], $lien_devis)){ $size_doc=1; //Le fichier a été uploadé correctement } else{//Erreur $mauvaisFormat[]='Erreur lors de la copie du fichier'; } } else { $mauvaisFormat[]= "Le document doit être en .doc ou .pdf"; } } else { $mauvaisFormat[]= 'Le fichier est trop gros, veuillez compresser le fichier !!!'; } } else { $size_doc=0; $lien_devis=""; $tabloVide[] ="Veuillez sélectionner un fichier au format PDF !!!"; } // Début da la procédure de concaténation des fichiers PDF ob_start(); $pdf = new PDFMerger; $pdf->addPDF('documents/bon_de_commande/bdc12269-02-2021-8198.pdf', 'all') ->addPDF($lien_devis, 'all') ->merge('file', $repertoireDevis.'devis-bdc-test15022021.pdf'); ob_end_clean(); // Fin de la procédure de concaténation des fichiers PDF // On vérifie la présence de $pdf if ($pdf){echo "C'est Good !!!";}else{echo "C'est pas Good !!!";} } ?> <!DOCTYPE HTML> <html> <head> <title>Générer Ligne Comptable</title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> </head> <body class="homepage"> <form action='sample.php' method='post' name='formDevis' id='loginform' enctype='multipart/form-data'> <label for 'devis_original'>Devis original (format .pdf) :</label> <input type="file" name="devis_original" /><br /> <input style="margin-bottom:2em;" class="actions style1" type="submit" name="enregistrer" value="Générer une ligne Devis" /> </form> </body> </html>
Je me demande à quel moment le fichier envoyé par l'internaute est-il réellement présent sur le serveur: après la ligne "if(move_uploaded_file($_FILES['devis_original']['tmp_name'], $lien_devis)){...}" ou à la fin d’exécution de la page. Cela pourrait expliquer que cette page n'est jamais fusionnée.

Je galère depuis quelques jours sur ce fichier.
:shock: :oops:
Merci pour le coup de main.