Как мне сгенерировать RTF из Java? - PullRequest
9 голосов
/ 08 января 2009

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

В настоящее время мы создаем структуру XML с помощью Java, передаем ее в XMLmind XSL-FO Converter вместе с настроенным XSL-FO, который затем создает документ RTF.

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

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

Ответы [ 5 ]

8 голосов
/ 10 июля 2010

Вы можете взглянуть на новую библиотеку под названием jRTF . Позволяет создавать новые документы RTF и заполнять шаблоны RTF.

4 голосов
/ 08 января 2009

Вы смотрели библиотеку iText ? Он рекламируется в основном как генератор PDF, хотя он может также генерировать RTF . У меня не было причин использовать его лично, но общее ощущение, которое я получаю, заключается в том, что это хорошо, а интерфейс выглядит всеобъемлющим и с ним легко работать абстрактно. Хорошо ли это согласуется с вашей существующей моделью данных - это другой вопрос.

2 голосов
/ 08 января 2009

Если бы вы могли позволить себе потратить немного денег, вы могли бы использовать Aspose.Words , профессиональную библиотеку для создания документов Word и RTF для Java и .NET.

1 голос
/ 08 января 2009

iText поддерживает RTF.

0 голосов
/ 04 июля 2012
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);
        }
    }
}
...