Jump to content
php.lv forumi

Konvertēt RTF uz HTML un otrādi.


Maris-S

Recommended Posts

Laba diena!

 

Gribēju pajautāt vai kāds ir ar php veidojis konvertācijas starp RTF un HTML formātiem? Vai ir kādi normāli risinājumi? Sakarīgu php skriptu tā arī nesanāca atrast, pārsvarā sanāca ar viņiem tā ka tie vispār nestrādā, jo tiek izmantotas daudzas funkcijas, kas ir deprecated, parāda ļoti daudz brīdinājumu par to un meklēt kas tieši tur nestrādā ir ne visai vienkārši. Varētu jau kodu arī salabot, bet kaut kā negribas pārāk daudz uz to tērēt laiku, ja rezultātā tiks konvertēts ļoti elementārs teksts, kur sarežģītākais būs kāds formatējums boldā.

 

Tā kā neatradu neko jēdzīgu php, tad paskatījos kādas komandrindas programmiņas un atradu šo:

 

http://www.gnu.org/software/unrtf

 

šis variants būs jāizmanto ja nekas cits neatradīsies, jo programmiņa strādā ar failiem, bet rtf teksts ir datubāzē, tāpēc labāk būtu atrast pieeju, kas strādā pa tiešo ar tekstu, nesaglabājot to failos.

 

Ja ir kādam laba doma, kā to realizēt, padalieties lūdzu.

 

Paldies jau iepriekš!

Link to comment
Share on other sites

Paldies par atbildēm.

 

Jā, phprtflite arī vajadzēs izmantot, jo uz otru pusi arī jākonvertē. Pašam rtf sourci skatoties arī negribas taisīt, kaut arī pārsvarā tur būs vienkārši teksti, tomēr ir iespēja kaut ko palaist garām.

 

Cik izpētīju optimāli laikam būs izmantot unrtf komandrindas programmiņu, sourci ir jānolasa no faila, tātad būs jāveido laicīgais fails un jāsaglabā rtf saturs tajā, pēc tam jāizdzēš, bet rezultātu viņa izdod uzreiz uz izvadi, ko varēs uzreiz attēlot, izvelkot no rezultāta to, kas ir starp <body></body> tagiem.

Edited by Maris-S
Link to comment
Share on other sites

ja es te neko neputroju, tad tas RTF ir kaut kas līdzīgs PDF, tik laikam brīvais! Nezinu, varētu pamēģināt mpdf, kas ļauj arī uz RTF cept!

require("include/mpdf/mpdf.php");
 $out_stream = mb_convert_encoding($out_stream, UTF-8');

 $mpdf=new mPDF('utf-8-s');
 $mpdf->SetDisplayMode('fullpage');
 $mpdf->useOnlyCoreFonts = true;
 $mpdf->WriteHTML($out_stream);
 $out_stream = $mpdf->Output('','S');

nu tad vēl iemeti iekšā kāda konteinerī!

Link to comment
Share on other sites

Ne gluži, PDF formāts kā tāds vienmēr ir bijis atvērts, ja nemaldos, šis formāts ir pat izstrādāts kādā ASV valdības pasūtījumā, vai arī ar viņu līdzdarbību. Portable document format. Specifikācija viņam arī ir pieejama, piemēram šeit:

 

http://partners.adob...DFReference.pdf

 

tur ir noteikti atšķirības arī versijās.

 

RTF ir pavisam cits formāts un arī atvērts:

 

http://msdn.microsof...fice.10%29.aspx

 

To vai MPDF atpazīst RTF formātu gan neizmēģināju, sataisīju izmantojot unrtf.

 

private function rtf_to_html(&$message) {
   $file_name = TMP_DIRECTORY . DS . 'rtf' . DS . time() . '.rtf';
   file_put_contents($file_name, $message); //Save rtf stream to temporary file

   //Get file mime type.
   $finfo = finfo_open(FILEINFO_MIME_TYPE);
   $file_type = finfo_file($finfo, $file_name);
   finfo_close($finfo);

   if ($file_type == 'text/rtf') {
       exec("unrtf --nopict --html $file_name", $html);
       $html = implode('', $html);
       $pos_1 = mb_stripos($html, '<body>');
       $pos_2 = mb_stripos($html, '</body>');
       if ($pos_1 !== false && $pos_2 !== false) {
           $pos_1 += mb_strlen('<body>');
           $html = mb_substr($html, $pos_1, $pos_2 - $pos_1);
           $message = $html;
       }
   } elseif ($file_type != 'text/plain') {
       $message = '';
   }

   //Delete temporary file.
   if (file_exists($file_name))
       if (!unlink($file_name))
           $this->write_simple('Couldn\'t delete temporary rtf file: ' . $file_name); //Write error message to the log file (method from the parent class).
}

Edited by Maris-S
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...