Domanda

Ho un file RTF che voglio visualizzare all'interno di una pagina web dopo i tag sono stati sostituiti con l'input dell'utente.

Mi piacerebbe essere in grado di visualizzare il file RTF senza dover convertire in qualcosa prima di visualizzarlo.

Ogni volta che provo ora mi dà la comparsa di apertura / box anche se io dico che per visualizzarla in linea con salvataggio:

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

echo $output;
È stato utile?

Soluzione

La maggior parte dei browser non verranno visualizzati in modo affidabile il contenuto RTF. E 'possibile analizzare il formato RTF in HTML, e visualizzare il contenuto HTML sulla tua pagina web però.

È necessario un qualche tipo di programma per analizzare RTF e convertirlo in HTML. Sto assumendo che deve essere libero. Non so di alcun affidabile analisi RTF libero o RTF per le librerie HTML in PHP.

vi consiglio di utilizzare un programma di conversione della riga di comando come RTF2HTML: http: // sageshome.net/?w=downloads/soft/RTF2HTML.html

Si avrebbe bisogno di scaricare e installare questo programma sul vostro server web, permettere all'utente di caricare il file in una directory temporanea, e quindi chiamare l'applicazione a riga di comando da PHP con shell_exec ():

$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);

Poi, analizzare i risultati in formato HTML e li visualizza. Non è una cattiva strategia. Si noti che si avrà probabilmente bisogno di rimuovere la testa, il corpo e, eventualmente, altri tag se si sta andando a visualizzare il contenuto all'interno un'altra pagina web.

Altri suggerimenti

Si potrebbe voler controllare https://github.com/tbluemel/rtf.js per il rendering lato client RTF. E 'ancora nelle sue fasi iniziali, ma rende la grafica, anche incorporati. Il supporto per il rendering grafica WMF incorporato è ancora molto molto limitato, però, e richiede il supporto del browser per il tag.

È necessario un RTF al convertitore HTML scritto in PHP. Penso che questa pagina contiene la soluzione:

http: // www .websofia.com / 2014/05 / a-lavoro-RTF-to-HTML-converter-in-php /

Per prima cosa: hai il tuo tipo di contenuto errato. per RTF è text/rtf

Secondo: sarete solo in grado di visualizzare in linea questo tipo di contenuti, che può essere reso dal browser web. RTF non è uno di questi. Quindi non sarà in grado di visualizzarlo in linea senza convertirlo, o senza alcuni plug-in per il browser. Naturalmente la conversione potrebbe essere on-the-fly.

Le pagine Web possono contenere solo HTML. Si avrebbe bisogno di un plugin per browser come Flash per visualizzare altri tipi di file. Vedere Scribd per esempio.

Questa non è esattamente una risposta alla tua domanda, ma una cosa si può decidere di fare è rimuovere il "filename = mark.rtf" dalla testata. Ho avuto i browser trattano qualcosa come download se includo "filename" nell'intestazione, anche se il "Content-Disposition" è "in linea".

Non è possibile solo in uscita un file all'interno di codice PHP. È necessario estrarre i dati da esso, quindi stampare i contenuti in linea.

'file_get_contents' la funzione PHP possono fare quello che ti serve. Il manuale funzioni è qui: http://us2.php.net/filegetcontents

Un esempio dell'uso è qui:

$contents = file_get_contents('yourfile.rtf');
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top