varios tiene saber paginas numero extraer datos cuantas create contar con como abrirlo php pdf

tiene - Cuente el número de páginas en un PDF solo en PHP



extraer datos de un pdf con php (11)

De hecho fui con un enfoque combinado. Como tengo la función de administrador deshabilitada en mi servidor, quería seguir con una solución basada en PHP, así que terminé con esto:

Código:

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; }

Si no puede resolver las cosas porque no hay etiquetas Count, entonces usa la extensión imagick php. La razón por la que hago un acercamiento doble es porque este último es bastante lento.

Necesito una forma de contar el número de páginas de un PDF en PHP. He hecho un poco de Google y las únicas cosas que he encontrado son utilizar scripts shell / bash, perl u otros idiomas, pero necesito algo en PHP nativo. ¿Hay alguna biblioteca o ejemplos de cómo hacer esto?


En el entorno * nix puede usar:

exec(''pdftops '' . $filename . '' - | grep showpage | wc -l'', $output);

Donde los pdftops deben ser instalados por defecto.

O como Xethron sugirió:

pdfinfo filename.pdf | grep Pages: | awk ''{print $2}''


Prueba esto :

<?php if (!$fp = @fopen($_REQUEST[''file''],"r")) { echo ''failed opening file ''.$_REQUEST[''file'']; } else { $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); echo ''There ''.($max<2?''is '':''are '').$max.'' page''.($max<2?'''':''s'').'' in ''. $_REQUEST[''file''].''.''; } ?>

La etiqueta Count muestra el número de páginas en los diferentes nodos. El nodo padre tiene la suma de los demás en su etiqueta Count, por lo que este script solo busca el máximo (es decir, el número de páginas).


Puede probar fpdi (ver here ), como puede ver al establecer el archivo de origen, obtiene los números de página.


Sé que esto es bastante antiguo ... pero si ahora es relevante para mí, también puede ser relevante para otros.

Acabo de resolver este método para obtener números de página, ya que los métodos enumerados aquí son ineficaces y extremadamente lentos para archivos PDF grandes.

$im = new Imagick(); $im->pingImage(''name_of_pdf_file.pdf''); echo $im->getNumberImages();

Parece estar funcionando bien para mí!


Si usa Linux, esto es mucho más rápido que utilizar el identify para obtener el recuento de páginas (especialmente con un número elevado de páginas):

exec(''/usr/bin/pdfinfo ''.$tmpfname.'' | awk /'/Pages/ {print $2}/''', $output);

Usted necesita pdfinfo instalado.


Usar solo PHP puede resultar en la instalación de bibliotecas complicadas, el reinicio de Apache, etc. y muchas formas PHP puras (como abrir flujos y usar expresiones regulares) son inexactas .

La respuesta incluida es la única manera rápida y confiable en la que puedo pensar. Sin embargo, utiliza un solo ejecutable que no tiene que estar instalado (ni * nix ni Windows) y un simple script PHP extrae el resultado. ¡Lo mejor es que aún no he visto un recuento de páginas incorrecto!

Se puede encontrar aquí, incluyendo por qué los otros enfoques "no funcionan" :

Obtener el número de páginas en un documento PDF


este no usa imagick:

function getNumPagesInPDF($file) { //http://www.hotscripts.com/forums/php/23533-how-now-get-number-pages-one-document-pdf.html if(!file_exists($file))return null; if (!$fp = @fopen($file,"r"))return null; $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); return (int)$max; }


Puede usar la extensión ImageMagick para PHP. ImageMagick entiende los PDF, y puede usar el comando de identify para extraer el número de páginas. La función PHP es Imagick::identifyImage() .


$pdftext = file_get_contents($caminho1); $num_pag = preg_match_all("///Page/W/", $pdftext,$dummy);


function getNumPagesPdf($filepath) { $fp = @fopen(preg_replace("//[(.*?)/]/i", "", $filepath), "r"); $max = 0; if (!$fp) { return "Could not open file: $filepath"; } else { 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 = trim($matches2[0]); break; } } } @fclose($fp); } return $max; }

Esto hace exactamente lo que quiero:

Acabo de resolver este método para obtener los números de página en PDF ... después de obtener la cuenta de la página en pdf, solo agrego el break al momento para que no entre en un bucle infinito aquí ...