Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας παιδιά!

 

Σίγουρα υπάρχουν πολλές κλάσεις που βοηθούν στην επικοινωνία δεδομένων μέσω php και word (doc, docx).

Αυτό που θέλω πιο συγκεκριμένα (αρχικά) είναι αν γίνεται να εμφανίσω τα δεδομένα ενός αρχείου word ακριβώς με τον τρόπο που είναι δομημένα (παραγράφους κτλ), στον browser και να τα αποθηκεύσω σε ένα array.

 

Οπότε όποιος έχει χρησιμοποιήσει κάποια κλάση για κάτι τέτοιο ας μου πει αν θέλει :)

  • 2 εβδομάδες αργότερα...
Δημοσ.

Κατάφερα να πάρω το κείμενο από docx (μορφοποίηση δεν παίζει με τίποτα) με τον παρακάτω τρόπο:

<?php
header('Content-Type: text/html; charset=utf-8');

function kv_read_word($input_file){   
    $kv_strip_texts = '';
         $kv_texts = '';    
   if(!$input_file || !file_exists($input_file)) return false;
      
   $zip = zip_open($input_file);
      
   if (!$zip || is_numeric($zip)) return false;
   
   
   while ($zip_entry = zip_read($zip)) {
         
      if (zip_entry_open($zip, $zip_entry) == FALSE) continue;
         
      if (zip_entry_name($zip_entry) != "word/document.xml") continue;

      $kv_texts .= zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
         
      zip_entry_close($zip_entry);
   }
   
   zip_close($zip);
      

   $kv_texts = str_replace('</w:r></w:p></w:tc><w:tc>', " ", $kv_texts);
   $kv_texts = str_replace('</w:r></w:p>', "\r\n", $kv_texts);
   $kv_strip_texts = strip_tags($kv_texts);

   return $kv_strip_texts;
}


$kv_texts = kv_read_word('a.docx');
if($kv_texts !== false) {      
   echo nl2br($kv_texts);   
}
else {
   echo "Can't Read that file.";
}

?>

Επίσης βρήκα και αυτό τον κώδικα για .doc αλλά δε δουλεύει με ελληνικά και στα αγγλικά σε κάποια σημεία βγάζει περίεργος χαρακτήρες (στα ελληνικά βγάζει ερωτηματικά).

<?php
header('Content-Type: text/html; charset=utf-8');

function parseWord($userDoc)  
{ 
    $fileHandle = fopen($userDoc, "r"); 
    $word_text = @fread($fileHandle, filesize($userDoc)); 
    $line = ""; 
    $tam = filesize($userDoc); 
    $nulls = 0; 
    $characters = 0; 
    for($i=1536; $i<$tam; $i++) 
    { 
        $line .= $word_text[$i]; 
 
        if( $word_text[$i] == 0) 
        { 
            $nulls++; 
        } 
        else 
        { 
            $nulls=0; 
            $characters++; 
        } 
 
        if( $nulls>1996) 
        {    
            break;   
        } 
    } 
 
    //echo $characters; 
 
    $lines = explode(chr(0x0D),$line); 
    //$outtext = "<pre>"; 
 
    $outtext = ""; 
    foreach($lines as $thisline) 
    { 
        $tam = strlen($thisline); 
        if( !$tam ) 
        { 
            continue; 
        } 
 
        $new_line = "";  
        for($i=0; $i<$tam; $i++) 
        { 
            $onechar = $thisline[$i]; 
            if( $onechar > chr(240) ) 
            { 
                continue; 
            } 
 
            if( $onechar >= chr(0x20) ) 
            { 
                $characters++; 
                $new_line .= $onechar; 
            } 
 
            if( $onechar == chr(0x14) ) 
            { 
                $new_line .= "</a>"; 
            } 
 
            if( $onechar == chr(0x07) ) 
            { 
                $new_line .= "\t"; 
                if( isset($thisline[$i+1]) ) 
                { 
                    if( $thisline[$i+1] == chr(0x07) ) 
                    { 
                        $new_line .= "\n"; 
                    } 
                } 
            } 
        } 
        $new_line = str_replace("HYPERLINK" ,"<a href=",$new_line);  
        $new_line = str_replace("\o" ,">",$new_line);  
        $new_line .= "\n"; 
 
        $new_line = str_replace("INCLUDEPICTURE" ,"<br><img src=",$new_line);  
        $new_line = str_replace("\*" ,"><br>",$new_line);  
        $new_line = str_replace("MERGEFORMATINET" ,"",$new_line);  
 
 
        $outtext .= nl2br($new_line); 
    } 
 
 return $outtext; 
}  
 
$userDoc = "Globalization.doc"; 
$userDoc = "Globalization.doc"; 
$text = parseWord($userDoc); 

echo $text;

?>

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...