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 galère depuis quelques jours sur ce fichier.
Merci pour le coup de main.