2010-01-19 8 views

Répondre

1

Vous pouvez convertir le HTML en RTF en utilisant les API Java de base RTFEditorKit et HTMLEditorKit. Il ne convertit pas les nouvelles étiquettes de ligne comme <br/> et <p> en caractères de nouvelle ligne équivalents au format RTF. J'ai appliqué le correctif externe pour cela comme indiqué dans le code Java suivant.

private static String convertToRTF(String htmlStr) { 

    OutputStream os = new ByteArrayOutputStream(); 
    HTMLEditorKit htmlEditorKit = new HTMLEditorKit(); 
    RTFEditorKit rtfEditorKit = new RTFEditorKit(); 
    String rtfStr = null; 

    htmlStr = htmlStr.replaceAll("<br.*?>","#NEW_LINE#"); 
    htmlStr = htmlStr.replaceAll("</p>","#NEW_LINE#"); 
    htmlStr = htmlStr.replaceAll("<p.*?>",""); 
    InputStream is = new ByteArrayInputStream(htmlStr.getBytes()); 
    try { 
     Document doc = htmlEditorKit.createDefaultDocument(); 
     htmlEditorKit.read(is, doc, 0); 
     rtfEditorKit .write(os, doc, 0, doc.getLength()); 
     rtfStr = os.toString(); 
     rtfStr = rtfStr.replaceAll("#NEW_LINE#","\\\\par "); 
    } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (BadLocationException e) { 
      e.printStackTrace(); 
     } 
    return rtfStr; 
} 

Ici, je remplaçais de nouvelles balises HTML équivalent en ligne à une chaîne spéciale et le remplacement de retour à la nouvelle représentation de ligne Chars séquence \ par au format RTF.

Si vous souhaitez utiliser des API plus efficaces et que votre code html est valide, vous devez explorer Apache-FOP.

Apache FOP peut être utilisé pour convertir en RTF. Voici quelques liens utiles -

http://www.torsten-horn.de/techdocs/java-xsl.htm#XSL-FO-Java

http://html2fo.sourceforge.net/index.html

Questions connexes