문제

PHP가 (업로드 된) PowerPoint 프레젠테이션을 읽고 각 슬라이드에서 텍스트를 최소한으로 추출하고 싶습니다 (이미지 및 레이아웃과 같은 더 많은 정보를 잡는 것이 더 나을 것입니다.

Google Apps가 프레젠테이션 앱에서 수행한다는 것을 알고 있으므로 PowerPoint 이진을 번역 할 수있는 방법이 있다고 생각하지만이를 수행하는 방법에 대한 정보를 찾을 수는 없습니다.

무엇을 시도 해야하는지에 대한 아이디어가 있습니까?

감사 -

도움이 되었습니까?

해결책 4

나는 이것에 결의안을 게시하고 싶었다.

불행히도, 나는 PHP가 이진 데이터를 안정적으로 읽을 수 없었습니다.

내 솔루션은 PowerPoint를 자동화하여 작동하는 작은 VB6 앱을 작성하는 것이 었습니다.

내가 찾고 있던 것이 아니라 지금은 문제를 해결합니다.

즉, Zend 옵션은 어느 시점에서 실행 가능한 것처럼 보이므로 볼 것입니다.

감사.

다른 팁

버전에 따라 zend_search_lucene이 PowerPoint 2007 파일을 색인 할 수 있으므로 Zend 프레임 워크를 살펴볼 수 있습니다. 해당 클래스 파일을 살펴보십시오. Zend_Search_Lucene_Document_Pptx.

예, 물론 가능합니다.

여기에 시작이 있습니다.] (] (http://download.microsoft.com/download/0/b/e/0be8bdd7-e5e8-422a-abfd-4342ed7ad886/powerpoint97-2007binaryfileformat(ppt)specification.pdf) 나는 그것이 잘 문서화/형식화되어 있다고 말하지는 않지만, 일단 시작하면 그렇게 어렵지는 않습니다. 필요한 요소 (슬라이드, 텍스트 등)에만 집중하여 시작하십시오.

덜 상세하고 간단한 접근 방식은 HEX 편집기에서 .ppt 파일을 열고 당신이 교차하는 정보 (이진 데이터 내에서 텍스트를 볼 수 있어야 함)와 그 주변의 정보를 찾는 것입니다. 그런 다음 정보를 둘러싸고있는 정보를 기반 으로이 정보를 추출하는 파서를 작성할 수 있습니다.

다음은 내가 만든 샘플 기능입니다 비슷한 것 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;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top