note 97178 deleted from ref.pdf by danbrown

From: Date: Wed, 07 Apr 2010 13:31:54 +0000
Subject: note 97178 deleted from ref.pdf by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-167753@lists.php.net to get a copy of this message
Note Submitter: Anonymous ---- Another modified version od the pdf2txt, compiled of all the pdf2txt's available. <?php function pdf2txt($filename){ $data = getFileData($filename); $s = strpos($data,"%")+1; $version = substr($data,$s,strpos($data,"%",$s)-1); if(substr_count($version,"PDF-1.2")==0) { return handleV3($data); } else { return handleV2($data); } } function handleV2($data){ $tmp = strpos($data, "stream"); $end_stream_delimiter = substr($data, $tmp+6, 2); if($end_stream_delimiter != "\r\n") { $end_stream_delimiter = substr($end_stream_delimiter, 0, 1); } //echo bin2hex($end_stream_delimiter); // - debug information $a_obj = getDataArray($data,"obj","endobj"); foreach($a_obj as $obj) { $a_filter = getDataArray($obj,"<<",">>"); if (is_array($a_filter)) { $j++; $a_chunks[$j]["filter"] = $a_filter[0]; $a_data = getDataArray($obj,"stream". $end_stream_delimiter,"endstream"); if (is_array($a_data)) { $a_chunks[$j]["data"] = substr($a_data[0], strlen("stream".$end_stream_delimiter), strlen($a_data[0])- strlen("stream".$end_stream_delimiter)-strlen("endstream")); } } } foreach($a_chunks as $chunk){ $a_filter = split("/",$chunk["filter"]); if ($chunk["data"]!=""){ // look at the filter to find out which encoding has been used if (substr($chunk["filter"],"FlateDecode")!==false){ $data =@ gzuncompress($chunk["data"]); if (trim($data)!=""){ // CHANGED HERE, before: $result_data .= ps2txt($data); $result_data .= FilterNonText(PS2Text_New($data)); } else { //$result_data .= "x"; } } } } return $result_data; } function FilterNonText($data) { for($i=1;$i<9;$i++) { if(strpos($data, chr($i)) !== false) { return ""; } } return $data; } function handleV3($data){ // grab objects and then grab their contents (chunks) $a_obj = getDataArray($data,"obj","endobj"); $result_data=""; foreach($a_obj as $obj){ //check if it a string if(substr_count($obj,"/GS1")>0){ //the strings are between ( and ) preg_match_all("|\((.*?)\)|",$obj,$field,PREG_SET_ORDER); if(is_array($field)) foreach($field as $data) $result_data.=$data[1]; } } return $result_data; } function ps2txt($ps_data){ $result = ""; $a_data = getDataArray($ps_data,"[","]"); if (is_array($a_data)){ foreach ($a_data as $ps_text){ $a_text = getDataArray($ps_text,"(",")"); if (is_array($a_text)){ foreach ($a_text as $text){ $result .= substr($text,1,strlen($text)-2); } } } } else { // the data may just be in raw format (outside of [] tags) $a_text = getDataArray($ps_data,"(",")"); if (is_array($a_text)){ foreach ($a_text as $text){ $result .= substr($text,1,strlen($text)-2); } } } return $result; } function getFileData($filename){ $handle = fopen($filename,"rb"); $data = fread($handle, filesize($filename)); fclose($handle); return $data; } function getDataArray($data,$start_word,$end_word){ $start = 0; $end = 0; unset($a_result); while ($start!==false && $end!==false){ $start = strpos($data,$start_word,$end); if ($start!==false){ $end = strpos($data,$end_word,$start); if ($end!==false){ // data is between start and end $a_result[] = substr($data,$start,$end-$start+strlen($end_word)); } } } return $a_result; } ?>

« previous php.notes (#167753) next »