Необходима помощь! Задача: Необходимо конвертнуть pdf в plain text или html средствами php. Для этих целей была использована функция-конвертор, найденная на php.net. Эта функция корректно выдирает текст на английском языке, а вот вместо русского выползает нечто вроде: Код (Text): 5ќ««СоШKuzЂќ¦§¬№116?CFg……”РЦиcЂ Ђћ¶Щя22H‹§Л(HbМьнэ*эYэЮююю[ю–юБюзяVяy%-.|‡‘™ЎҐҐЄЇ¶ЖМЧЭмт #*,1?GIIMQQUUWZZabhhЂ‚ѓ„Ќ•••?™Ґ© ¶¶·єєХЯжкт%'/9CCGORRgooprv~§і№Ц %- Жду предложений по поводу решения данной проблемы. Исходный код функции-конвертора: Код (Text): <?php $test = pdf2string("D:/www/search/test.pdf"); echo "$test"; # Returns a -1 if uncompression failed function pdf2string($sourcefile) { $fp = fopen($sourcefile, 'rb'); $content = fread($fp, filesize($sourcefile)); fclose($fp); # Locate all text hidden within the stream and endstream tags $searchstart = 'stream'; $searchend = 'endstream'; $pdfdocument = ""; $pos = 0; $pos2 = 0; $startpos = 0; # Iterate through each stream block while( $pos !== false && $pos2 !== false ) { # Grab beginning and end tag locations if they have not yet been parsed $pos = strpos($content, $searchstart, $startpos); $pos2 = strpos($content, $searchend, $startpos + 1); if( $pos !== false && $pos2 !== false ) { # Extract compressed text from between stream tags and uncompress $textsection = substr($content, $pos + strlen($searchstart) + 2, $pos2 - $pos - strlen($searchstart) - 1); $data = @gzuncompress($textsection); # Clean up text via a special function $data = ExtractText($data); # Increase our PDF pointer past the section we just read $startpos = $pos2 + strlen($searchend) - 1; if( $data === false ) { return -1; } $pdfdocument = $pdfdocument . $data; } } return $pdfdocument; } function ExtractText($postScriptData) { while( (($textStart = strpos($postScriptData, '(', $textStart)) && ($textEnd = strpos($postScriptData, ')', $textStart + 1)) && substr($postScriptData, $textEnd - 1) != '\\') ) { $plainText .= substr($postScriptData, $textStart + 1, $textEnd - $textStart - 1); if( substr($postScriptData, $textEnd + 1, 1) == ']' ) // This adds quite some additional spaces between the words { $plainText .= ' '; } $textStart = $textStart < $textEnd ? $textEnd : $textStart + 1; } return stripslashes($plainText); } ?>
Проверено. Перекодировка с использованием mbstring результатов не дала. Были проверены все доступные кодировки.
Преобразовать нужно именно этот файл или нужен скрипт на все случаи жизни? Может просто выделить весь текст и вставить в ворд или блокнот
Если бы так, задачи не стояло бы. Ее можно уточнить и слегка расширить: необходим скрипт, умеющий выдирать из pdf-а текстовые данные (причем, как на английском, так и на русском).
rusart там все дело в самом PDF. скрипт выдирает правильно, а вот дальше ... я пробовал сгенерировать PDF через fpdf - все нормально читается и выдирается. твой PDF получен из MSWORD и что он туда пихает черт его знает. даже штатный pdftotext из набора xpdf непонимает его. думаю тут жопа.
Хуже, что даже если взять лицензию от Apache (имеется там такая в pdf), с ней тоже возникнут проблемы. В общем-то проблема уже решена на 80% в самое ближайшее время выложу решение.
Частично (~на 80%) решение имеется здесь: http://forum.fatal.ru/viewtopic.php?p=46744 Для моей задачи данного решения пока достаточно, а доводить времени нет. Я вернусь к ней чуть позже.
Народ помогите с той-же проблемой. Я уже проверял предложенный вариант решения поставленной задачи, конвертации PDF в текст но у меня в моей PDFине теряются некоторые куски текста. И немогу придумать как мне сделать нормальную разбивку по страницам.
Это на грани невозможного, так как PDF - закрытый формат. Единственное 99% решение проблемы - это использовать внешние утилиты. Для Linux - это pdf2html, для win надо поискать. Хотя, если есть время и знания, можно взять какие-нибудь открытые исходники подобных утилит и попробовать портировать их на php. Изврат, конечно, не если получится, человечество тебе будет благодарно.