Как создать RTF из Java?

Я работаю над веб-инструментом, где мы предлагаем индивидуальные отпечатки.

В настоящее время мы строим структуру XML с Java, подаем ее в XMLmind помощи xsl-ФО конвертер вместе с подгонянным XSL-FO, которое после этого производит документ RTF.

Это отлично работает на простых макетах, но есть некоторые проблемные области, где я хотел бы больший контроль, или где я не могу делать то, что я хочу вообще. F. например: таблицы в верхнем, Нижнем колонтитулах (например, номера страниц), столбцы, имеющие отдельный настройка столбца или другая информация о номере страницы на первой странице и т. д.

знает ли кто-нибудь из вас лучшие альтернативы, либо XMLmind, либо способ, которым мы получаем данные в RTF, т. е. Java -> XML, XML+XSL - > RTF? (Единственное практическое ограничение для нас-СПМ.)

5 ответов


Если бы вы могли позволить себе тратить деньги, вы могли бы использовать Aspose.Слова!--2-->, профессиональная библиотека для создания документов Word и RTF для Java и .Сеть.


вы можете взглянуть на новую библиотеку под названием 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);
        }
    }
}