Как создать 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. У меня не было причин использовать его лично, но общее чувство, которое я получаю, заключается в том, что это хорошо, и интерфейс выглядит всеобъемлющим и простым в абстрактной работе. Будет ли он четко вписываться в существующую модель данных-это другой вопрос.
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);
}
}
}