2009-01-08 16 views
9

Ich arbeite an einem web-basierten Tool, wo wir kundenspezifische Drucke anbieten.Wie generiere ich RTF aus Java?

Gegenwärtig erstellen wir eine XML-Struktur mit Java, füttern sie zusammen mit angepasster XSL-FO an die XMLmind XSL-FO Converter, die dann ein RTF-Dokument erzeugt.

Dies funktioniert gut bei einfachen Layouts, aber es gibt einige Problembereiche, in denen ich mehr Kontrolle haben möchte, oder wo ich nicht tun kann, was ich will. ZB: Tabellen in Kopf- und Fußzeilen (z. B. Seitenzahlen), Spalten, mit separater Spalteneinstellung oder andere Seitennummerninformationen auf der ersten Seite usw.

Kennt jemand von Ihnen bessere Alternativen? XMLmind oder wie wir Daten von RTF beziehen, also Java -> XML, XML + XSL -> RTF? (Die einzige praktische Einschränkung für uns ist die JVM.)

+0

Sowohl Aspose.Words und iText sieht vielversprechend nach einem kurzen Blick. Ich könnte beide testen, wenn ich die Zeit habe ... – Ingvald

+1

Am Ende gingen wir mit Aspose, Vorlagen verwenden, geben uns eine gute Kontrolle über Format und Stil – Ingvald

Antwort

2

Wenn Sie es sich leisten könnten etwas Geld auszugeben, können Sie Aspose.Words verwenden, eine professionelle Bibliothek zum Erstellen von Word- und RTF-Dokumenten für Java und .NET.

+1

Danke für den Tipp - es muss nicht frei sein. Schließlich musst du Geld (Geld oder Zeit) ausgeben, um Geld zu verdienen ... – Ingvald

4

Haben Sie sich die iText Bibliothek angesehen? Es wird vor allem als PDF-Generator angepriesen, obwohl es also generate RTF. Ich habe keinen Grund gehabt, es persönlich zu benutzen, aber das allgemeine Gefühl, das ich bekomme, ist, dass es gut ist, und die Schnittstelle sieht umfassend und einfach aus, um abstrakt zu arbeiten. Ob es zu Ihrem bestehenden Datenmodell passen würde, ist eine andere Frage.

+0

Danke für den Tipp - ich werde es untersuchen. – Ingvald

+2

hat itext aufhören rtf zu unterstützen? Auf ihrer Homepage kann ich nichts über RTF finden - nur PDF! –

+2

ok, rtf wurde in ein separates Projekt verschoben, siehe: http://itextrtf.sourceforge.net/ –

8

Sie können sich eine neue Bibliothek namens jRTF ansehen. Sie können neue RTF-Dokumente erstellen und RTF-Vorlagen füllen.

+0

Danke! Interessant, auch wenn mir ein paar Dinge fehlen, die ich brauche. (Ref "Was ist nicht unterstützt" in http://code.google.com/p/jrtf/ - nette Tisch Handhabung, Gifs, gute Stil/Formatierung Kontrolle) – Ingvald

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); 
     } 
    } 
} 
+0

Ihre Antwort scheint interessant, Pflege, um einige Kommentare hinzuzufügen? Wie funktioniert es? Vielleicht eine Verbindung zu einem Arbeitsprojekt? – Yaroslav

+0

Dies (http://stackoverflow.com/questions/13515210/difference-between-lowagie-and-itext) zumindest anwser wer oder was ist lowagie – mkdev

Verwandte Themen