PHP가 PowerPoint 파일에서 텍스트를 읽을 수 있습니까?
-
22-07-2019 - |
문제
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;
}