2009-01-08 43 views
9

Trabajo en una herramienta basada en web donde ofrecemos impresiones personalizadas.¿Cómo puedo generar RTF desde Java?

Actualmente construimos una estructura XML con Java, la alimentamos al XMLmind XSL-FO Converter junto con XSL-FO personalizado, que luego produce un documento RTF.

Esto funciona bien en diseños simples, pero hay algunas áreas problemáticas en las que me gustaría un mayor control, o donde no puedo hacer lo que quiero en absoluto. F.ex: tablas en encabezado, pies de página (por ejemplo, números de página), columnas, con una configuración de columna separada o información de número de página diferente en la primera página, etc.

¿Alguno de ustedes conoce mejores alternativas, ya sea para XMLmind o la forma en que obtenemos datos para RTF, es decir, Java-> XML, XML + XSL-> RTF? (La única limitación práctica para nosotros es la JVM.)

+0

Tanto Aspose.Words como iText se ven prometedores después de un rápido vistazo. Podría probarlos a los dos cuando tenga el tiempo ... – Ingvald

+1

Al final fuimos con Aspose, usando plantillas, dándonos un buen control sobre el formato y el estilo – Ingvald

Respuesta

2

Si pudiera gastar algo de dinero, podría usar Aspose.Words, una biblioteca profesional para crear documentos Word y RTF para Java y .NET.

+1

Gracias por el consejo, no tiene que ser gratis. Después de todo, tienes que gastar dinero (efectivo o tiempo) para ganar dinero ... – Ingvald

4

¿Has echado un vistazo a la biblioteca iText? Se promociona principalmente como un generador de PDF, aunque puede also generate RTF. No he tenido motivos para usarlo personalmente, pero la sensación general es que es bueno, y la interfaz parece completa y fácil de trabajar en abstracto. Si esto encajaría bien con su modelo de datos existente es otra pregunta.

+0

Gracias por el consejo, lo investigaré. – Ingvald

+2

¿hizo itext stop para soportar rtf? En su página de inicio no puedo encontrar nada sobre RTF - ¡solo PDF! –

+2

ok, rtf se movió a un proyecto separado, ver: http://itextrtf.sourceforge.net/ –

8

Puede echar un vistazo a una nueva biblioteca llamada jRTF. Le permite crear nuevos documentos RTF y rellenar plantillas RTF.

+0

¡Gracias! Interesante, incluso si parece que le faltan algunas cosas que necesito. (Refiérase a "Lo que no es compatible" en http://code.google.com/p/jrtf/ - buena gestión de tablas, gifs, buen control de estilo/formato) – 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

Su respuesta parece interesante, ¿desea añadir algunos comentarios? ¿Cómo funciona? ¿Tal vez un enlace con algún proyecto en funcionamiento? – Yaroslav

+0

Esto (http://stackoverflow.com/questions/13515210/difference-between-lowagie-and-itext) al menos un autor que o qué es lowagie – mkdev

Cuestiones relacionadas