(我正在寻找一个开源库)
答案 0 :(得分:3)
iText我相信有RTF功能以及pdf。
答案 1 :(得分:2)
您可以使用基本Java API RTFEditorKit
和HTMLEditorKit
将HTML转换为RTF。
它不会将<br/>
和<p>
等新行标记转换为RTF中的新行字符等效值。我已经为其应用了外部修复程序,如下面的Java代码所示。
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;
}
在这里,我将新行等效HTML标记替换为某些特殊字符串,并在RTF中替换回新行代表字符序列 \ par 。
如果你想使用更有效的API并且你有有效的html,你应该探索Apache-FOP。
Apache FOP可用于转换为RTF。以下是一些有用的链接 -
http://www.torsten-horn.de/techdocs/java-xsl.htm#XSL-FO-Java