PHP kullanarak bir web sayfası içinde bir RTF dosyasını görüntülemek mümkün mü?

5 Cevap php

Ben etiketler kullanıcı girişi ile değiştirildikten sonra ben bir web sayfası içinde görüntülemek istediğiniz bir RTF dosyası var.

Ben görüntülemeden önce bir şeye dönüştürmek zorunda kalmadan RTF dosyası görüntülemek mümkün olmak istiyorum.

Ben bana inline görüntülemek için söylüyorum rağmen açılan kaydetmek / açık kutu verir şimdi deneyin her zaman:

header("Content-type: application/msword");
header("Content-Disposition: inline; filename=mark.rtf");
header("Content-length: " . strlen($output));

echo $output;

5 Cevap

Tarayıcıların çoğu güvenilir RTF içeriği görüntülemek olmaz. Bu HTML içine RTF ayrıştırmak ve ancak web sayfasındaki HTML içeriğini görüntülemek mümkün IS.

RTF ayrıştırmak ve HTML dönüştürmek için program bir tür gerekir. Ben özgür olmak vardır varsayarak yaşıyorum. PHP HTML kütüphanelere herhangi bir güvenilir ücretsiz RTF ayrıştırma veya RTF bilmiyorum.

http://sageshome.net/?w=downloads/soft/RTF2HTML.html: Ben bir komut satırı dönüştürme programı RTF2HTML gibi kullanmanızı öneririz

Sen) indirmek ve kurmak bu programı kendi sunucusu üzerinde, kullanıcı geçici bir dizine dosya yüklemesine izin ve sonra shell_exec ile PHP komut satırı uygulaması (aramak gerekir:

$html_output_path = '/path/for/processing/files/'
$html_output_filename = $username . $timestamp;
if (is_uploaded_file($_FILES['userfile']['tmp_name'])
{
  shell_exec('rtf2html ' . 
    escapeshellarg($_FILES['userfile']['tmp_name']) . " " .
    $html_output_path . $html_output_filename);
}
$html_to_display = file_get_contents($html_output_path . 
  $html_output_filename);

Sonra, HTML olarak sonuçlarını ayrıştırmak ve bunları görüntüleyebilirsiniz. Değil kötü bir strateji. Başka bir web sayfası içinde içeriği görüntülemek için gidiyoruz eğer, muhtemelen baş, vücut ve muhtemelen diğer etiketleri kaldırmak gerektiğini unutmayın.

Web sayfaları sadece HTML içerebilir. Diğer dosya türlerini görüntülemek için flaş gibi bir tarayıcı eklentisi gerekir. Scribd, örneğin bkz.

Birincisi: Eğer içerik türü yanlış var. RTF için bu kadar text/rtf

İkincisi: Eğer sadece-line web tarayıcısı tarafından kılınabilir bu tip içerik görüntülemek mümkün olacak. RTF bunlardan biri değildir. Yani bunu dönüştürmeden sıralı görüntülemek mümkün olacak, ya da olmadan olmaz bazı plug-in tarayıcı için. Tabii dönüşüm on-the-fly olabilir.

Bu tam olarak sorunun bir cevabı değil, ama yapmak isteyebilirsiniz bir şey başlığından "dosya = mark.rtf" kaldırmak değildir. Ben "Content-Bırakma", "inline" olsa bile, ben başlığında "filename" eklerseniz tarayıcılar indirilerek şey tedavi yaşadım.

Sadece çıkış PHP kodu içinde bir dosya olamaz. Sen inline içeriğini yazdırmak, sonra ondan veri ayıklamak gerekiyor.

Php function 'file_get_contents' ne ihtiyaç yapabilirsiniz. Fonksiyonlar manuel burada: http://us2.php.net/filegetcontents

Örnek bir kullanım burada:

$contents = file_get_contents('yourfile.rtf');