2009-03-14 8 views
2

Je veux que PHP lise une présentation Powerpoint (téléchargée), et extraite au minimum le texte de chaque diapositive (saisir plus d'informations comme les images et les dispositions serait encore mieux, mais je me contenterais du texte à ce stade). Je sais que google apps le fait dans son application de présentation, donc je devine qu'il y a un moyen de traduire le binaire powerpoint, mais je n'arrive pas à trouver d'informations sur la façon de le faire.PHP peut-il lire du texte à partir d'un fichier PowerPoint?

Toutes les idées sur quoi essayer?

Merci -

Répondre

0

Je voulais poster ma résolution à cela.

Malheureusement, je n'ai pas pu obtenir PHP pour lire de façon fiable les données binaires.

Ma solution était d'écrire une petite application vb6 qui fait le travail en automatisant PowerPoint.

Pas ce que je cherchais, mais, résout le problème pour le moment. Cela dit, l'option Zend semble être viable à un moment donné, alors je vais regarder ça.

Merci.

1

Oui, bien sûr, c'est possible.

[Voici un début.] (http://download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7AD886/PowerPoint97-2007BinaryFileFormat(ppt)Specification.pdf) Je ne dirais pas que c'est très bien documenté/formulé, mais ce n'est pas si difficile une fois que vous commencez en vous concentrant uniquement sur les éléments dont vous avez besoin (diapositives, texte, etc.).

Une approche moins détaillée et plus simple serait d'ouvrir le fichier .ppt dans l'éditeur hexadécimal et rechercher des informations que vous interesed dans (vous devriez être en mesure de voir le texte dans les données binaires) et ce qui l'entoure. Ensuite, en fonction de ce entoure cette information que vous pourriez écrire un analyseur qui extrait cette information

3

Selon la version, vous pouvez jeter un oeil sur Zend Framework car Zend_Search_Lucene est capable d'indexer PowerPoi nt 2007 fichiers. Jetez juste un coup d'oeil au fichier de classe correspondant, je pense que c'est quelque chose comme Zend_Search_Lucene_Document_Pptx.

1

Voici une exemple de fonction que j'ai créée sous forme de similar one qui extrait du texte à partir de documents Word. Je l'ai testé avec des fichiers Microsoft PowerPoint, mais il ne sera pas décoder les fichiers OpenOfficeImpress enregistrés en tant que .ppt

Pour les fichiers .pptx, vous pouvez jeter un oeil à Zend Lucene.

function parsePPT($filename) { 
    // This approach uses detection of the string "chr(0f).Hex_value.chr(0x00).chr(0x00).chr(0x00)" to find text strings, which are then terminated by another NUL chr(0x00). [1] Get text between delimiters [2] 
    $fileHandle = fopen($filename, "r"); 
    $line = @fread($fileHandle, filesize($filename)); 
    $lines = explode(chr(0x0f),$line); 
    $outtext = ''; 

    foreach($lines as $thisline) { 
     if (strpos($thisline, chr(0x00).chr(0x00).chr(0x00)) == 1) { 
      $text_line = substr($thisline, 4); 
      $end_pos = strpos($text_line, chr(0x00)); 
      $text_line = substr($text_line, 0, $end_pos); 
      $text_line = preg_replace("/[^a-zA-Z0-9\s\,\.\-\n\r\[email protected]\/\_\(\)]/","",$text_line); 
      if (strlen($text_line) > 1) { 
       $outtext.= substr($text_line, 0, $end_pos)."\n"; 
      } 
     } 
    } 
    return $outtext; 
} 
Questions connexes