PHP に (アップロードされた) パワーポイント プレゼンテーションを読み取らせ、各スライドからテキストを最小限に抽出したいと考えています (画像やレイアウトなどのより多くの情報を取得する方が良いですが、この時点ではテキストだけで解決します)。
Google アプリはプレゼンテーション アプリでそれを行うことを知っているので、パワーポイント バイナリを翻訳する方法があると思いますが、その方法に関する情報が見つからないようです。
何を試すかについてのアイデアはありますか?
ありがとう -
PHP に (アップロードされた) パワーポイント プレゼンテーションを読み取らせ、各スライドからテキストを最小限に抽出したいと考えています (画像やレイアウトなどのより多くの情報を取得する方が良いですが、この時点ではテキストだけで解決します)。
Google アプリはプレゼンテーション アプリでそれを行うことを知っているので、パワーポイント バイナリを翻訳する方法があると思いますが、その方法に関する情報が見つからないようです。
何を試すかについてのアイデアはありますか?
ありがとう -
Zend_Search_Lucene は PowerPoint 2007 ファイルのインデックスを作成できるため、バージョンによっては Zend Framework を調べることができます。対応するクラスファイルを見てくださいZend_Search_Lucene_Document_Pptx
。
はい、もちろん可能です。
[ここから始めます。非常によく文書化/フォーマット化されていますが、使い始めればそれほど難しくありません。必要な要素 (スライド、テキストなど) だけに注目することから始めます。
あまり詳細ではなく、より単純な方法は、.ppt ファイルを 16 進エディターで開き、興味のある情報 (バイナリ データ内のテキストを確認できるはずです) とそれを囲むものを探すことです。次に、その情報を取り囲むものに基づいて、この情報を抽出するパーサーを作成できます。
これは、Word 文書からテキストを抽出する同様の関数から作成したサンプル関数です。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;
}
私の決意をこれに投稿したかったのです。
残念ながら、PHP でバイナリ データを確実に読み取ることができませんでした。
私の解決策は、PowerPoint を自動化して作業を行う小さな vb6 アプリを作成することでした。
私が探していたものではありませんが、今のところ問題を解決します。
そうは言っても、Zendオプションはある時点で実行可能になるように見えるので、それを監視します.
ありがとう。