代码之家  ›  专栏  ›  技术社区  ›  Ingvald

如何从Java生成RTF?

  •  9
  • Ingvald  · 技术社区  · 17 年前

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

    目前,我们用Java构建XML结构,将其导入到 XMLmind XSL-FO Converter 以及定制的XSL-FO,它随后生成一个RTF文档。

    这在简单的布局上可以很好地工作,但是有一些问题区域我想要更大的控制,或者我根本做不到我想要的。例如:页眉、页脚(例如页码)、列中的表格,在第一页有单独的列设置或不同的页码信息,等等。

    你们中有谁知道更好的选择,要么是XMLmind,要么是从数据到RTF的方式,即Java≫XML,XML+XSL & GT;RTF?(对我们来说,唯一实际的限制是合资公司。)

    5 回复  |  直到 9 年前
        1
  •  2
  •   splattne    17 年前

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

        2
  •  8
  •   Buhake Sindi Tesnep    13 年前

    你可以看看一个叫做 jRTF . 它允许您创建新的RTF文档并填充RTF模板。

        3
  •  4
  •   Andrzej Doyle    17 年前

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

        4
  •  1
  •   joel.neely    17 年前

    iText 支持RTF。

        5
  •  0
  •   user1491821    14 年前
    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);
            }
        }
    }