¿Es posible mostrar un archivo RTF dentro de una página web usando PHP?

Tengo un archivo RTF que quiero mostrar dentro de una página web después de que las tags hayan sido reemplazadas con la entrada del usuario.

Me gustaría poder mostrar el archivo RTF sin tener que convertirlo en algo antes de mostrarlo.

Cada vez que lo bash, me da la ventana emergente de abrir / guardar, aunque le estoy diciendo que lo muestre en línea con:

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

La mayoría de los navegadores no mostrarán de manera confiable el contenido RTF. Es posible analizar el RTF en HTML y, sin embargo, mostrar el contenido HTML en su página web.

Necesitas algún tipo de progtwig para analizar RTF y convertirlo a HTML. Estoy asumiendo que tiene que ser libre. No conozco bibliotecas RTF o HTML de RTF gratis y fiables en PHP.

Le recomiendo que use un progtwig de conversión de línea de comandos como RTF2HTML: http://sageshome.net/?w=downloads/soft/RTF2HTML.html

Necesitará descargar e instalar este progtwig en su servidor web, permitir que el usuario cargue el archivo a un directorio temporal y luego llamar a la aplicación de línea de comandos desde 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); 

Luego, analice los resultados como HTML y visualícelos. No es una mala estrategia. Tenga en cuenta que probablemente necesitará quitar la cabeza, el cuerpo y posiblemente otras tags si va a mostrar el contenido dentro de otra página web.

Es posible que desee revisar https://github.com/tbluemel/rtf.js para la representación RTF del lado del cliente. Todavía está en sus primeras etapas, pero rinde incluso gráficos incrustados. Sin embargo, la compatibilidad con la representación de ilustraciones WMF incrustadas es todavía muy limitada y requiere compatibilidad con el navegador para la etiqueta.

Necesitabas un convertidor de RTF a HTML escrito en PHP. Creo que esta página contiene su solución:

http://www.websofia.com/2014/05/a-working-rtf-to-html-converter-in-php/

Primero: tienes tu tipo de contenido equivocado. para RTF es text/rtf

Segundo: solo podrá mostrar en línea este tipo de contenido, que puede ser representado por el navegador web. RTF no es uno de estos. Por lo tanto, no podrá mostrarlo en línea sin convertirlo o sin algún complemento para el navegador. Por supuesto, la conversión podría ser sobre la marcha.

Las páginas web solo pueden contener HTML. Necesitaría un complemento de navegador como flash para mostrar otros tipos de archivos. Ver Scribd por ejemplo.

Esto no es exactamente una respuesta a su pregunta, pero una cosa que puede hacer es eliminar el “filename = mark.rtf” del encabezado. He tenido navegadores que tratan algo como una descarga si incluyo “nombre de archivo” en el encabezado, incluso si la “Disposición de contenido” es “en línea”.

No puedes simplemente generar un archivo desde el código PHP. Necesita extraer los datos de él, luego imprimir los contenidos en línea.

La función php ‘file_get_contents’ puede hacer lo que necesites. El manual de funciones está aquí: http://us2.php.net/filegetcontents

Una muestra de uso está aquí:

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