Maris-S Posted August 15, 2012 Report Share Posted August 15, 2012 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š! Quote Link to comment Share on other sites More sharing options...
malinens Posted August 15, 2012 Report Share Posted August 15, 2012 rtf taisu ar phprtflite. otrādi gan īsti nezinu. varbūt komandrindas openoffice/libreoffice apskaties, bet tas būs milzīgs blāķis tādam uzdevumam... Quote Link to comment Share on other sites More sharing options...
rpr Posted August 16, 2012 Report Share Posted August 16, 2012 ja rtf nevajag neko sarežģītu un pietiek ar templeitā aizpildāmām vietām, tad paskaties rtf source, un sapratīsi, ka pats arī vari to aizpildīt ar str_replace (). Quote Link to comment Share on other sites More sharing options...
Maris-S Posted August 16, 2012 Author Report Share Posted August 16, 2012 (edited) 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 August 16, 2012 by Maris-S Quote Link to comment Share on other sites More sharing options...
eriksz Posted August 17, 2012 Report Share Posted August 17, 2012 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ī! Quote Link to comment Share on other sites More sharing options...
Maris-S Posted August 21, 2012 Author Report Share Posted August 21, 2012 (edited) 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 August 21, 2012 by Maris-S Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.