Rtf to html

Soyez le premier à donner votre avis sur cette source.

Snippet vu 23 328 fois - Téléchargée 32 fois

Contenu du snippet

Class permettant de convertir du texte rtf en html.
Le code généré est relativement basique et certaines balises ne sont pas gérées.
(ça aide bien quand même ! =)

Source / Exemple :


import javax.swing.*;
import javax.swing.text.*;
import javax.swing.text.rtf.*;
import javax.swing.text.html.*;
import java.io.*;

public class RtfToHtml {
	
	public static String convertRtfToHtml(final String txt) {
		final RTFEditorKit rtf_edit = new RTFEditorKit();
		final JTextPane jtp_rtf = new JTextPane();
		final JTextPane jtp_html = new JTextPane();
		final StyleContext rtf_context = new StyleContext();
		final DefaultStyledDocument rtf_doc = new DefaultStyledDocument(rtf_context);
		jtp_rtf.setEditorKit(rtf_edit);
		jtp_rtf.setContentType("text/rtf");
		jtp_html.setContentType("text/html");
		try {
			rtf_edit.read(new StringReader(txt),rtf_doc,0);
			jtp_rtf.setDocument(rtf_doc);
			jtp_html.setText(rtf_doc.getText(0,rtf_doc.getLength()));
			HTMLDocument html_doc = null;
			for (int i = 0; i < rtf_doc.getLength(); i++) {
				AttributeSet a = rtf_doc.getCharacterElement(i).getAttributes();
				AttributeSet p = rtf_doc.getParagraphElement(i).getAttributes();
				String s = jtp_rtf.getText(i, 1);
				jtp_html.select(i, i+1);
				jtp_html.replaceSelection(s);
				html_doc = (HTMLDocument)jtp_html.getDocument();
				html_doc.putProperty("","");
				html_doc.setCharacterAttributes(i,1,a,false);
				MutableAttributeSet attr = new SimpleAttributeSet(p);
				html_doc.setParagraphAttributes(i,1,attr,false);
			}
			StringWriter writer = new StringWriter();
			final HTMLEditorKit html_edit = new HTMLEditorKit();
			html_edit.write(writer,html_doc,0,html_doc.getLength());
			return writer.toString();
		} catch (Exception ex) {
			return "Erreur rtf: " + ex.toString(); 
		}
	}
};

A voir également

Ajouter un commentaire

Commentaire

Messages postés
8
Date d'inscription
mercredi 30 mars 2005
Statut
Membre
Dernière intervention
9 septembre 2005

bonjour

j'ai un jtextpane qui contient du texte en gras, souligné, de tailles differentes et des images. et j'aimerais que tout ca se transforme en code html.
j'ai utilisé ce code mais je n'y arrive pas. g changé qq trucs :

public String convertRtfToHtml(final JTextPane jtp_rtf) {
final RTFEditorKit rtf_edit = new RTFEditorKit();
//final JTextPane jtp_rtf = new JTextPane();
final JTextPane jtp_html = new JTextPane();
final StyleContext rtf_context = new StyleContext();
final DefaultStyledDocument rtf_doc = new DefaultStyledDocument(rtf_context);
jtp_rtf.setEditorKit(rtf_edit);
jtp_rtf.setContentType("text/rtf");
jtp_html.setContentType("text/html");
try {
int fin = jtp_rtf.getDocument().getLength();
rtf_edit.read(new StringReader(jtp_rtf.getDocument().getText(0,fin)),rtf_doc,0);

le reste est le meme ! mais ca plante quand ca arrive a la derniere ligne que j'ai ecrite. voilou si quelqu'un a une idée thanx d'avance

bonne journée
Obi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.