PHPはPowerPointファイルからテキストを読み取ることができますか?

StackOverflow https://stackoverflow.com/questions/646659

  •  22-07-2019
  •  | 
  •  

質問

(アップロードされた)パワーポイントプレゼンテーションをPHPに読み込ませ、各スライドからテキストを最小限に抽出します(画像やレイアウトなどの情報を取得する方がよいでしょうが、この時点でテキストだけで済ませます)。

グーグルアプリはプレゼンテーションアプリでそれを行うことを知っているので、パワーポイントバイナリを翻訳する方法があると推測していますが、それを行う方法に関する情報を見つけることができないようです。

何を試すべきか?

ありがとう-

役に立ちましたか?

解決 4

これに解決策を投稿したかった

残念ながら、PHPにバイナリデータを確実に読み取らせることができませんでした。

私の解決策は、PowerPointを自動化して作業を行う小さなvb6アプリを書くことでした。

探していたものではありませんが、今のところ問題を解決します。

そうは言っても、Zendオプションはある時点で実行可能であるように見えるので、それを見ていきます。

ありがとう。

他のヒント

バージョンによっては、Zend_Search_LuceneがPowerPoint 2007ファイルのインデックスを作成できるため、Zend Frameworkを確認できます。対応するクラスファイルを見てください。 Zend_Search_Lucene_Document_Pptx のようなものだと思います。

もちろん、可能です。

[ここから始まります。]( http://download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7AD886/PowerPoint97-2007BinaryFileFormat(ppt)Specification.pdf)十分に文書化/フォーマットされているとは言いませんが、使い始めてからそれほど難しくありません。必要な要素(スライド、テキストなど)のみに注目することから始めます。

あまり詳細ではない、より簡単なアプローチは、16進エディターで.pptファイルを開き、興味のある情報(バイナリデータ内のテキストを表示できるはずです)とそれを囲むものを探すことです。次に、その情報を囲むものに基づいて、この情報を抽出するパーサーを作成できます。

類似したフォームから作成したサンプル関数です。 Word文書からテキストを抽出する1つ。 Microsoft PowerPointファイルでテストしましたが、.pptとして保存されたOpenOfficeImpressファイルをデコードしません

.pptxファイルについては、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\t@\/\_\(\)]/","",$text_line);
            if (strlen($text_line) > 1) {
                $outtext.= substr($text_line, 0, $end_pos)."\n";
            }
        }
    }
    return $outtext;
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top