2012-02-20 16 views
12

Quiero mostrar contenido con formato HTML de varias fuentes dentro de una aplicación Flash Flex. Flash admite el formato HTML en sus campos de texto, sin embargo, es muy limitado en comparación con un navegador web. ¿Hay scripts por ahí que conviertan texto con formato HTML común en un formato que Flash pueda manejar? Mis casos de uso particulares son:¿Limpiar el contenido formateado en HTML para visualizarlo en Flash?

  • Viendo mensajes de correo electrónico con formato HTML dentro de Flash
  • Viendo los archivos RTF dentro de Flash (después de ejecutar una conversión RTF2HTML en el servidor)
  • Viendo el contenido HTML al azar copiado y pegado de otras fuentes en Flash

Estoy abierto al código que se ejecuta en el cliente o en el servidor, pero es probable que el servidor sea preferible.

+0

Pregunta un tanto interesante Tengo curiosidad por saber si hay algún tipo de motores de renderizado de HTML confiables en el servidor que enviarían los datos prestados como datos de mapa de bits (aunque me imagino que el exceso podría ser ridículo) . Alternativamente, el cliente puede echar un vistazo a StageWebView http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/media/StageWebView.html – shaunhusain

+0

En realidad, me pregunto si podría agarrar el kit web y engancharlo para renderizar el lado del servidor HTML y luego enviar de alguna manera la versión renderizada (codificada como jpg o algo así) al cliente. O si alguien ya ha hecho esto – shaunhusain

+0

@shaunhusain Sí, hay varios proyectos que renderizan páginas web como mapas de bits en el servidor y luego las envían de vuelta. Puede elegir entre un servicio web que llame a su API o un código que ejecute en su propio servidor. Algunos enlaces: http://url2png.com http://webthumb.bluga.net/home http://www.thumbalizr.com/ http://www.boutell.com/webthumb/ http: // khtml2png. sourceforge.net/ – davr

Respuesta

5

El subconjunto de etiquetas HTML admitidas es bastante pobre y no ha cambiado para siempre:

<a>, <b>, <br>, <font>, <img>, <i>, <li>, <p>, <textformat>, <u> 

que esto significa es que, independientemente de la calidad de conversión, html no puede ser traducido como toda la intención; también podría estar renunciando a una parte importante del estilo css si reemplaza etiquetas no compatibles con otras más básicas.

Dicho esto, http://simplehtmldom.sourceforge.net/ (PHP) funcionaría con algunos ajustes y es lo suficientemente competente como para hacer frente también al marcado no válido (al ver cómo se procesa el contenido de varias fuentes, diría que esta característica solo salvaría mucho dolor en el largo plazo) - de reemplazar

<h1>,...,<h6> => <b> 
<strong>  => <b> 
<em>   => <i> 

texto plano y el resto de los párrafos en que se sorprendería de lo legible aún así sería. Usted podría ser un poco demasiado extravagante, así:

<h1> => <b class="header1"> 

y añadir un poco de CSS según el caso (aunque el soporte CSS Flash es bastante limitado también)

He estado ahorrando éste de postre - Vas o lo amo o lo odio, pero sería el truco. Suponiendo que su aplicación se implemente en el navegador (si no es así y le he leído mal, ahórreme la vergüenza y deje de leer aquí), podría usar un iframe para mostrar su html, en serio.

JS < - > La comunicación AS es bastante sencilla y podría colocarla en un área predeterminada de su aplicación, dando la ilusión de que es parte de ella; simplemente recuerde establecer windowmode en el objeto/incrustación flash correctamente para que no se represente sobre otros elementos de la página, luego aumente el iframe z-index.

No me sorprendería si esto se considera un enfoque "feo", pero es hermoso por dentro: terminará con html literal y compatibilidad con CSS real. En cuanto a las interacciones del usuario, incluso podría interceptar los clics del enlace, etc. en el iframe y solicitar una acción del clip de película.

+1

Su respuesta enumera bastantes puntos que se le ocurrieron. Especialmente la parte con la superposición html en un área determinada podría ser la forma más plausible de lidiar con todas las deficiencias de la propia renderización html de flash. ¿Cómo convertirías tablas o formularios al subconjunto flash html? - Simplemente no lo veo funcionando a través de la propia representación html de flash. – kontur

1

AS3 HTML Parser Library no es exactamente lo que estoy buscando, ya que no convierte el HTML sino que lo procesa en Flash, lo que significa que no será editable. Pero puede ser útil en algunos casos que solo quiero mostrar y no editar texto.

Otra opción es mirar varios ejemplos de HTML que me gustaría poder mostrar, y luego escribir regex para convertirlos al formato que Flash/TLF espera. Pero siento que eso puede ser un gran esfuerzo, debido a la amplia gama de HTML que hay.

+0

No entiendo. Si su objetivo es solo mostrar contenido HTML, la biblioteca a la que se vinculó parece hacer exactamente eso. –

2

Puede usar HTMLPurifier y especificar una lista blanca de etiquetas que desea admitir.

Cuestiones relacionadas