PHPはPowerPointファイルからテキストを読み取ることができますか?
-
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;
}