Это моя версия перевода html в текст (на самом деле измененная версия ответа user121196).
Это не только сохраняет разрывы строк, но также форматирует текст и удаляет лишние разрывы строк, экранирующие символы HTML, и вы получите намного лучший результат из своего HTML (в моем случае я получаю его отmail).
Первоначально он написан на Scala, но вы можете легко изменить его на Java
def html2text( rawHtml : String ) : String = {
val htmlDoc = Jsoup.parseBodyFragment( rawHtml, "/" )
htmlDoc.select("br").append("\\nl")
htmlDoc.select("div").append("\\nl")
htmlDoc.select("p").prepend("\\nl\\nl")
htmlDoc.select("p").append("\\nl\\nl")
org.jsoup.parser.Parser.unescapeEntities(
Jsoup.clean(
htmlDoc.html(),
"",
Whitelist.none(),
new org.jsoup.nodes.Document.OutputSettings().prettyPrint(true)
),false
).
replaceAll("\\\\nl", "\n").
replaceAll("\r","").
replaceAll("\n\\s+\n","\n").
replaceAll("\n\n+","\n\n").
trim()
}