9

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

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

这适用于简单的布局,但在一些问题区域我想要更好的控制,或者我根本无法做我想做的事情。F.ex:页眉、页脚(例如页码)、列中的表格,在第一页上有单独的列设置或不同的页码信息等。

你们有谁知道更好的替代方案,无论是XMLmind 还是我们从数据到RTF 的方式,即Java-> XML、XML+XSL-> RTF?(对我们来说唯一的实际限制是 JVM。)

4

5 回答 5

8

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

于 2010-07-10T06:26:15.547 回答
4

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

于 2009-01-08T13:06:14.063 回答
2

如果您有能力花一些钱,您可以使用Aspose.Words,这是一个用于为 Java 和 .NET 创建 Word 和 RTF 文档的专业库。

于 2009-01-08T14:00:35.717 回答
0

iText支持 RTF。

于 2009-01-08T13:03:11.013 回答
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);
        }
    }
}
于 2012-07-03T21:48:14.627 回答