Sidebar

How can I convert HTML to RTF?

0 votes
1.6K views
asked Feb 28, 2017 by mike-r-7535 (13,830 points)
Given an HTML string, how can I convert that to RTF?

1 Answer

0 votes

You can create this published function within QIE:

function convertHtmlToRtf(htmlString) {
   var os = new java.io.ByteArrayOutputStream();
   var is = null;
   var rtfString = '';
   try {
      var htmlEditorKit = new javax.swing.text.html.HTMLEditorKit();
      var rtfEditorKit = new javax.swing.text.rtf.RTFEditorKit();
      
      htmlString = htmlString.replaceAll("<br.*?>","#NEW_LINE#");
      htmlString = htmlString.replaceAll("</p>","#NEW_LINE#");
      htmlString = htmlString.replaceAll("<p.*?>","");
      is = new java.io.ByteArrayInputStream(htmlString.getBytes("UTF-8"));

      var doc = htmlEditorKit.createDefaultDocument();
      doc.putProperty("IgnoreCharsetDirective", true);
      htmlEditorKit.read(is, doc, 0);
      rtfEditorKit.write(os, doc, 0, doc.getLength());
      rtfString = os.toString();
      rtfString = rtfString.replaceAll("#NEW_LINE#","\\\\par ");
   } catch (e) {
      qie.warn("Caught error: " + e);
   } finally {
      if (os !== null) {
         try {
            os.close();
         } catch (err) {
            qie.warn("Error closing OutputStream: " + err);
         }
      }
      if (is !== null) {
         try {
            is.close();
         } catch (err) {
            qie.warn("Error closing OutputStream: " + err);
         }
      }
   }
   return rtfString;
}

Here is an example of how you can use this function, assuming the OBX-5 first is an HTML string.

var htmlString = message.getNode("OBX-5");
var rtfString = convertHtmlToRtf(htmlString);

 

answered Feb 28, 2017 by mike-r-7535 (13,830 points)
edited Feb 14, 2018 by michael-h-5027
...