La communauté bonjour !

J'essaye de réaliser un outil web PHP qui découpe un PDF en fonction du nombre de page voulu, puis cherche dans les documents crées une référence, à l'aide de cette référence l'outil fait une connexion à une base de donnée, récupère les informations liées (en l'occurrence NOM PRÉNOM), et enfin renomme les PDF scindés en REFERENCE_NOM_PRENOM.PDF

Donc une première page formulaire index.php assez simple pour récupérer le fichier à diviser :

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
<!DOCTYPE html>
<html lang='fr'>
	<head>
		<meta charset="utf-8">
		<link rel="stylesheet" media="screen" type="text/css" title="design" href="split.css" />
		<title>SPLIT THIS !</title>
	</head>
	<body>
		<header>
			<table class="header">
				<tr>
					<td>
						<a href='index.php'><img src='bnk/logo.png' alt='logo'/></a>
					</td>
					<td>
						<h1>SPLIT</h1>
					</td>
				</tr>
			</table>
		</header>
 
		<div id='container'>
			<table class="formulaire">
				<form method="post" action="treat.php" enctype="multipart/form-data">
					<tr>
						<td>	
							<label>Séléctionner Fichier :</label>
						</td>
						<td>
							<INPUT TYPE ="HIDDEN" NAME ="MAX_FILE_SIZE" VALUE ="40240000" />
							<input name ="fichier" type ="file" id ="fichier"  class ="formulaire" value ="" size ="30" />
						</td>
					</tr>
					<tr>
						<td>
							<label>Division</label>
						</td>
						<td>
							<select name="division">
								<option value="2">2</option>
								<option value="3">3</option>
								<option value="4">4</option>
								<option value="5">5</option>
							</select>
						</td>
					</tr>
					<tr>
						<td colspan="2">
							<INPUT TYPE="submit" NAME="envoyer" VALUE="diviser le PDF" />
						</td>
					</tr>
				</form>
			</table>
		</div>
 
		<footer>
			<p>Outil développé par une personne au chomage</p>
		</footer>
 
	</body>
</html>
le formulaire envoi donc les informations vers la page treat.php qui va uploader le fichier sur un serveur, créer un dossier ou il va mettre les PDF divisés avec les différentes librairies FPDF, FPDI, PDFTOTEXT, et nous informer à la fin si le traitement s'est terminé correctement ou pas :

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
 
<?php 
	require_once('fpdf/fpdf.php');
	require_once('FPDI/fpdi.php');
	include ('PdfToText/PdfToText.phpclass');
	include('connexion.php');
 
	try{	
		//Initialisation d'une variable qui autorisera ou non l'enregistrement
		$uploaded = 0;
		$quotien = $_POST['division'];
		$fichier_size = $_FILES['fichier']['size'];
		$fichier_name = $_FILES['fichier']['name'];
		$nom_tmp = $_FILES["fichier"]["tmp_name"];
		$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']."/SPLIT/";
 
		//Si le fichier a une taille
		if($fichier_size > 0) 
		{
			//Répertoire où sera stocké ce fichier (le répertoire doit avoir les droits 0777)
			$dir = $DOCUMENT_ROOT."upload/";
 
			//On remplace les éventuels espaces dans le nom du fichier par des underscore
			$fichier_name = str_replace (" ", "_", $fichier_name);
 
			//On met le nom du fichier dans la variable $newfichier
			$newfichier = $fichier_name;
 
			//on sépare en deux le nom et l'extension
			list($nom, $ext) = explode(".", $newfichier);
 
			//On lui rajoute l'extension pour la copie dans le dossier
			$savefile = $nom.".".$ext;
 
			//Le fichier est déplacé dans le dossier prévu
			move_uploaded_file($nom_tmp, $dir.$savefile) or die('Impossible de copier le fichier : '.$savefile.mysql_error().' dans : '.$rep.mysql_error());
 
			//On passe la variable à 1
			$uploaded=1;
 
			echo "NOM DU FICHER : " . $savefile;
			echo "<br/>DOSSIER : " . $dir;
			echo "<br/>DIVISION : " . $quotien; 
 
 
			//Creer le dossier pour stocker les pdf scindés
			if(!file_exists("upload/".$nom))
			{
				mkdir("upload/".$nom,0777);
			}
 
			//le nom du fichier qu'on va scinder
			$filename = $DOCUMENT_ROOT."upload/".$nom.".".$ext;
 
			$pdf = new FPDI();
			$pagecount = $pdf->setSourceFile($filename); // Combien de page
 
			$first = true;
			$sub_first = true;
			//Si le pdf a suffisamment de page pour etre scinder par le quotien
			if($pagecount > $quotien)
			{		
 
				// On parcours toutes les pages du fichier
				for ($i = 1; $i <= $pagecount; $i++) 
				{
 
					//Si c'est la premiere page, on créer un fichier pdf
					if($first)
					{
 
						$new_pdf = new FPDI();
						$first = false;
 
					}
 
					$new_pdf->AddPage();
 
					//On récupère les pages source
					$new_pdf->setSourceFile($filename);
 
					//On importe la page courante dans le pdf récemment créé
					$new_pdf->useTemplate($new_pdf->importPage($i));
 
					//Si la page actuelle corespond à un multiple du quotien sélectionné, on enregistre le pdf et on en crée un autre
					if($i%$quotien == 0)
					{
						//la valeur $i permet d'éviter les doublons
						$new_filename = $dir.$nom."/".$nom."_".$i.".pdf";
						//Enregistre le pdf	
						$new_pdf -> Output($new_filename, "F");	
 
						// Crée un nouveau pdf
						$new_pdf = new FPDI();	
					}						
 
 
				}
 
				//S'il reste des pages qui sont inférieur au quotien if
				if($i%$quotien != 0)
				{	
					//la valeur $i permet d'éviter les doublons
					$new_filename = $dir.$nom."/".$nom."_".$i.".pdf";
 
					//Enregistre le pdf
					$new_pdf -> Output($new_filename, "F");
 
				}	
			}
 
			else
			{
 
				echo "Le fichier n'a pas assez de page pour être diviser par lot de ".$quotien." pages <br/>";
 
			}
 
		} 
 
		//Sinon, si le fichier n'a pas de taille
		else
		{
 
			//Si pas de taille, la variable reste à zéro pour empêcher l'écriture dans la base
			$uploaded=0;
		}
 
	}
 
	catch (Exception $e) 
 
	{
 
		echo 'Erreur : ',  $e->getMessage(), "\n";
 
	}	
 
?>
Le script scinde bien le document, crée un dossier avec le nom du document uploadé, avec à l'intérieur les fichiers correspondant.

La où je peine, c'est la dernière partie, qui est de renommer les fichiers PDF avec la référence.

J'arrive à récupérer des informations d'un PDF pour faire ensuite une connexion à une base de donnée, et récupérer le NOM PRÉNOM.

si je fais une page test.php comme ci-dessous, je récupère bien les informations voulu :

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
<?php 
 
	include ('PdfToText/PdfToText.phpclass');
 
	$pdf = new PdfToText('upload/fichier_uploader_date.pdf');
	$exp = explode("\n", $pdf);
 
	for ($i = 0, $max = count($exp) ; $i < $max ; $i++)
	{
 
		// on cherche la reference ID commence par *01
		$num_adh_search = strstr($exp[$i], "*01");
 
		$adh_num = substr($num_adh_search,1,8);
 
		echo $adh_num . ' ';
 
		//on récupère le nom prenom dans la base de donnée
		include('connexion.php');
 
		$requete = file_get_contents('SQL/per.sql');   
 
		$requete = str_replace("%ref_num%", $ref_num, $requete);
 
		$rqt = $db -> query($requete);
 
		$rep = $rqt -> fetchAll();
 
		foreach ($rep as $ligne)
		{
			$final_name = $ref_num . ' ' . $ligne['PER_NOM'] . ' ' . $ligne['PER_PRM'];
			echo $final_name . '<br />';
		}
 
		$rqt -> closeCursor();
 
	}
 
 
?>
Mais je n'arrive pas à l'insérer dans la page treat.php j'ai demandé à un ami un peu plus calé que moi pour le php et me dis que ce n'est pas possible.

Avez-vous une solution à me proposer ? peut-être la méthode employé n'est pas correcte ?

Dans l'attente de votre réponse.

Cordialement.