2012-02-20 18 views
12

Desidero visualizzare il contenuto in formato HTML da varie fonti all'interno di un'applicazione Flash Flex. Flash supporta la formattazione HTML nei suoi campi di testo, tuttavia è molto limitata rispetto a un browser web. Ci sono degli script là fuori che convertiranno il testo formattato HTML in un formato che Flash può gestire? I miei particolari casi d'uso sono:Pulizia del contenuto formattato in HTML per la visualizzazione in Flash?

  • Visualizzazione in formato HTML messaggi di posta elettronica all'interno di Flash
  • Visualizzazione di file RTF all'interno di Flash (dopo l'esecuzione di una conversione RTF2HTML sul server)
  • Visualizzazione di contenuto HTML casuale copiato e incollato da altre fonti in Flash

Sono aperto al codice che viene eseguito sul client o sul server, ma il server è probabilmente preferibile.

+0

Una domanda piuttosto interessante Sono curioso di sapere se esistono motori di rendering HTML affidabili sul lato server che restituiscano i dati pre-renderizzati come dati bitmap (anche se immagino che l'overhead per farlo potrebbe essere ridicolo) . In alternativa lato client controlla StageWebView http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/media/StageWebView.html – shaunhusain

+0

In realtà mi chiedo se potresti prendere il web-kit e collegarlo per rendere il lato server HTML poi in qualche modo inviare la versione renderizzata (codificata come jpg o qualcosa) al client. O se qualcuno lo ha già fatto. – shaunhusain

+0

@shaunhusain Sì, ci sono diversi progetti là fuori che rendono le pagine Web come una bitmap sul server e poi lo rimandano indietro. Puoi scegliere tra un servizio web che chiami per la loro API o il codice che esegui sul tuo server. Alcuni link: http://url2png.com http://webthumb.bluga.net/home http://www.thumbalizr.com/ http://www.boutell.com/webthumb/ http: // khtml2png. sourceforge.net/ – davr

risposta

5

Il sottoinsieme di tag HTML supportati è piuttosto scarsa e non è cambiata in eterno:

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

Questo significa che a prescindere dalla qualità di conversione, HTML non può essere reso pienamente previsto; potresti anche rinunciare a una porzione significativa dello stile css se sostituisci i tag non supportati con altri di base.

Detto questo, http://simplehtmldom.sourceforge.net/ (PHP) funzionerebbe con alcune modifiche ed è abbastanza competente per gestire anche il markup non valido (visto come sei dopo aver elaborato il contenuto da varie fonti, direi che questa funzione da sola potrebbe salvare un sacco di dolore a lungo termine) - che sostituire

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

e chiaro il resto di esso in paragrafi si sarebbe sorpreso di come leggibile sarebbe ancora. Si potrebbe essere un po 'di fantasia anche in questo modo:

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

e aggiungere un po css a seconda dei casi (anche se il supporto Flash css è piuttosto limitata troppo)

Ho risparmiato questo per deserto - Avrai o lo ami o lo odi, ma farebbe il trucco. Supponendo che la tua app sia distribuita nel browser (in caso contrario e ho letto male te, salvami l'imbarazzo e smetto di leggerla qui) potresti usare un iframe per visualizzare seriamente il tuo html.

JS < - > COME la comunicazione è abbastanza semplice e si potrebbe averla posizionata su un'area predeterminata della propria app, dando l'illusione di farne parte; ricorda solo di impostare windowmode sull'oggetto flash/embed correttamente in modo che non venga visualizzato sopra gli altri elementi della pagina, quindi aumentare lo z-index dell'iframe.

Non sarei sorpreso se questo è visto come un approccio "brutto", ma è bello all'interno - si finirà con html testualmente e supporto di css reale. Per quanto riguarda le interazioni dell'utente, puoi anche intercettare i clic di collegamento ecc. Nell'iframe e richiedere un'azione dal MovieClip.

+1

La tua risposta elenca alcuni punti che mi sono venuti in mente. Soprattutto la parte con la sovrapposizione HTML in una certa area potrebbe essere il modo più plausibile per gestire tutti i difetti del rendering html di Flash. Come convertire tabelle o moduli nel sottoinsieme Flash html? - Solo che non lo vedo funzionare tramite il proprio rendering html di Flash. – kontur

1

AS3 HTML Parser Library non è proprio quello che sto cercando, dal momento che non converte l'HTML ma lo rende invece all'interno di Flash, il che significa che non sarà modificabile. Ma può essere utile in alcuni casi che voglio solo visualizzare e non modificare il testo.

Un'altra opzione è esaminare diversi esempi di codice HTML che mi piacerebbe poter visualizzare e quindi scrivere espressioni regolari per convertirli nel formato che Flash/TLF si aspetta. Ma sento che potrebbe essere un grande sforzo, a causa della vasta gamma di HTML là fuori.

+0

Non capisco. Se il tuo obiettivo è quello di visualizzare solo contenuti HTML, la libreria a cui sei collegato sembra fare proprio questo. –

2

È possibile utilizzare HTMLPurifier e specificare una whitelist di tag che si desidera supportare.