Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/06/2005, 05:58
ajgallego
 
Fecha de Ingreso: junio-2005
Mensajes: 6
Antigüedad: 21 años, 4 meses
Puntos: 0
He encontrado la siguiente función, pero no obtiene ningún resultado a partir de un documento PDF normal. He estado comprobando lo que hace y al descomprimir los datos del PDF con @gzuncompress ($data); no devuelve nada. Puede ser problema de la función utilizada, que no utilice el mismo tipo de compresión.

Alguien sabe algo de esto?

El código es el siguiente:

Código PHP:
function pdf2string ($sourceFile)
  {
   
$textArray = array ();
   
$objStart = 0;
  
   
$fp = fopen ($sourceFile, 'rb');
   
$content = fread ($fp, filesize ($sourceFile));
   echo 
$content;
   
fclose ($fp);
  
   
$searchTagStart = chr(13).chr(10).'stream';
   
$searchTagStartLenght = strlen ($searchTagStart);
  
   while (((
$objStart = strpos ($content, $searchTagStart, $objStart)) && ($objEnd = strpos ($content, 'endstream', $objStart+1))))
   {
     
$data = substr ($content, $objStart + $searchTagStartLenght + 2, $objEnd - ($objStart + $searchTagStartLenght) - 2);
     
$data = @gzuncompress ($data);
    
     if (
$data !== FALSE && strpos ($data, 'BT') !== FALSE && strpos ($data, 'ET') !== FALSE)
     {
       
$textArray [] = ExtractText ($data);
     }
    
     
$objStart = $objStart < $objEnd ? $objEnd : $objStart + 1;
   }
  
   return 
$textArray;
  }
 
  function 
ExtractText ($postScriptData)
  {
   while (((
$textStart = strpos ($postScriptData, '(', $textStart)) && ($textEnd = strpos ($postScriptData, ')', $textStart + 1)) && substr ($postScriptData, $textEnd - 1) != '\\'))
   {
     
$plainText .= substr ($postScriptData, $textStart + 1, $textEnd - $textStart - 1);
     if (
substr ($postScriptData, $textEnd + 1, 1) == ']') //this adds quite some additional spaces between the words
     
{
       
$plainText .= ' ';
     }
    
     
$textStart = $textStart < $textEnd ? $textEnd : $textStart + 1;
   }
  
   return 
stripslashes ($plainText);
  }
?>