Domanda

Lavoro su uno strumento basato sul web in cui offriamo stampe personalizzate.

Attualmente costruiamo una struttura XML con Java, la inviamo al XMLmind XSL-FO Converter lungo con XSL-FO personalizzato, che quindi produce un documento RTF.

Funziona bene su layout semplici, ma ci sono alcune aree problematiche in cui mi piacerebbe un maggiore controllo o dove non posso fare quello che voglio. F.ex: tabelle nell'intestazione, piè di pagina (ad es. Numeri di pagina), colonne, con un'impostazione di colonna separata o informazioni sul numero di pagina diverse nella prima pagina, ecc.

Qualcuno di voi conosce alternative migliori, a XMLmind o al modo in cui passiamo dai dati a RTF, ovvero Java- > XML, XML + XSL- > RTF? (L'unica limitazione pratica per noi è la JVM.)

È stato utile?

Soluzione

Se potessi permetterti di spendere del denaro, potresti usare Aspose.Words , una libreria professionale per la creazione di documenti Word e RTF per Java e .NET.

Altri suggerimenti

Puoi dare un'occhiata a una nuova libreria chiamata jRTF . Ti consente di creare nuovi documenti RTF e di compilare modelli RTF.

Hai dato un'occhiata alla iText ? È pubblicizzato principalmente come generatore di PDF, sebbene possa generare anche RTF . Non ho avuto motivo di usarlo personalmente, ma la sensazione generale che ho è che sia buona e l'interfaccia sembra completa e facile da lavorare in astratto. Se si adatterebbe bene con il modello di dati esistente è un'altra domanda.

iText supporta 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);
        }
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top