Using the AdvancedRTFEditorKit library you can serialize a DefaultStyledDocument
to an RTF string.
try {
DefaultStyledDocument writeDoc = new DefaultStyledDocument();
writeDoc.insertString(0, "Test string", null);
AdvancedRTFEditorKit kit = new AdvancedRTFEditorKit();
//Other writers, such as a FileWriter, may be used
//OutputStreams are also an option
Writer writer = new StringWriter();
//You can write just a portion of the document by modifying the start
//and end indexes
kit.write(writer, writeDoc, 0, writeDoc.getLength());
//This is the RTF String
String rtfDoc = writer.toString();
//As above this may be a different kind of reader or an InputStream
StringReader reader = new StringReader(rtfDoc);
//AdvancedRTFDocument extends DefaultStyledDocument and can generally
//be used wherever DefaultStyledDocument can be.
//However for reading, AdvancedRTFDocument must be used
DefaultStyledDocument readDoc = new AdvancedRTFDocument();
//You can insert at different values by changing the "0"
kit.read(reader, readDoc, 0);
//readDoc is now the same as writeDoc
} catch (BadLocationException | IOException ex) {
//Handle exception
ex.printStackTrace();
}