Rtf to html

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

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.