如何从Java生成RTF?

我在基于网络的工具上工作,我们提供定制的打印。

目前,我们使用Java构建XML结构,将其提供给XMLmind XSL-FO转换器以及定制的XSL-FO,然后生成RTF文档。

这在简单的布局上工作得很好,但是在某些问题上我需要更好的控制,或者我根本不能做我想做的事情。 F.ex:页眉,页脚(例如,页码),列中的表格,在第一页上具有单独的列设置或不同的页码信息等。

你们中的任何人都知道更好的选择,无论是XMLmind还是我们从数据到RTF的方式,即Java-> XML,XML + XSL-> RTF? (我们唯一的实际限制是JVM。)

如果你能负担得起花钱,你可以使用Aspose.Words ,这是一个专业的库,用于为Java和.NET创建Word和RTF文档。

您可以查看名为jRTF的新库。 它允许您创建新的RTF文档并填充RTF模板。

你有没看过iText图书馆? 它主要被吹捧为PDF生成器,但它也可以生成RTF 。 我没有理由亲自使用它,但我得到的一般感觉是它很好,界面看起来很全面,易于使用。 它是否适合您现有的数据模型是另一个问题。

iText支持RTF。

import com.lowagie.text.*; import com.lowagie.text.html.simpleparser.HTMLWorker; import com.lowagie.text.html.simpleparser.StyleSheet; import com.lowagie.text.rtf.*; import java.io.*; import java.util.ArrayList; public class HTMLtoRTF { public static void main(String[] args) throws DocumentException { Document document = new Document(); try { Reader htmlreader = new BufferedReader((new InputStreamReader((new FileInputStream("C:\\Users\\asrikantan\\Desktop\\sample.htm"))))); RtfWriter2 rtfWriter = RtfWriter2.getInstance(document, new FileOutputStream(("C:\\Users\\asrikantan\\Desktop\\sample12.rtf"))); document.open(); document.add(new Paragraph("Testing simple paragraph addition.")); //ByteArrayOutputStream out = new ByteArrayOutputStream(); StyleSheet styles = new StyleSheet(); styles.loadTagStyle("body", "font", "Bitstream Vera Sans"); ArrayList htmlParser = HTMLWorker.parseToList(htmlreader, styles); //fetch HTML line by line for (int htmlDatacntr = 0; htmlDatacntr < htmlParser.size(); htmlDatacntr++) { Element htmlDataElement = (Element) htmlParser.get(htmlDatacntr); document.add((htmlDataElement)); } htmlreader.close(); document.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (Exception e) { System.out.println(e); } } }