如何从Java生成RTF?

时间:2009-01-08 12:52:27

标签: java xml xslt rtf

我使用基于网络的工具,我们提供自定义打印。

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

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

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

5 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:4)

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

iText支持RTF。

答案 4 :(得分:0)

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);
        }
    }
}