J'ai besoin d'un moyen de compter le nombre de pages d'un PDF en PHP. J'ai fait un peu de recherche sur Google et les seules choses que j'ai trouvées utilisent des scripts shell/bash, perl, ou d'autres langages, mais j'ai besoin de quelque chose en PHP natif. Existe-t-il des bibliothèques ou des exemples pour faire cela ?
Réponses
Trop de publicités?Vous pouvez utiliser l'extension ImageMagick pour PHP. ImageMagick comprend les PDF, et vous pouvez utiliser l'extension identify
pour extraire le nombre de pages. La fonction PHP est Imagick::identifyImage() .
Je sais que c'est assez vieux... mais si c'est pertinent pour moi maintenant, ça peut l'être pour d'autres aussi.
Je viens de mettre au point cette méthode pour obtenir les numéros de page, car les méthodes indiquées ici sont inefficaces et extrêmement lentes pour les gros PDF.
$im = new Imagick();
$im->pingImage('name_of_pdf_file.pdf');
echo $im->getNumberImages();
Ça a l'air de bien fonctionner pour moi !
En fait, j'ai opté pour une approche combinée. Comme l'exécution est désactivée sur mon serveur, j'ai voulu m'en tenir à une solution basée sur PHP, ce qui m'a conduit à cette solution :
Code :
function getNumPagesPdf($filepath){
$fp = @fopen(preg_replace("/\[(.*?)\]/i", "",$filepath),"r");
$max=0;
while(!feof($fp)) {
$line = fgets($fp,255);
if (preg_match('/\/Count [0-9]+/', $line, $matches)){
preg_match('/[0-9]+/',$matches[0], $matches2);
if ($max<$matches2[0]) $max=$matches2[0];
}
}
fclose($fp);
if($max==0){
$im = new imagick($filepath);
$max=$im->getNumberImages();
}
return $max;
}
S'il ne peut pas s'y retrouver parce qu'il n'y a pas de balises Count, il utilise l'extension php imagick. La raison pour laquelle je fais une double approche est que la seconde est assez lente.