Newsgroup: it.comp.java
Titolo: Libreria iText

Ciao a tutto il ng,
tra voi c'è qualcuno che ha esperienza riguardo questa libreria? In 
particolare quello che vorrei fare è la creazione dinamica di pdf da un 
file xml il quale contiene tag che si riferiscono a voci di un database 
mysql. Prima di arrivare a tanto volevo capire un po' meglio il 
funzionamento della libraria. A parte che per quanto cerchi non riesco a 
trovare il DTD di iText, volevo creare un tag che aggiungesse un 
paragrafo allineato da destra, così ho creato un metodo getTagMap che 
torna una HashMap come segue
public static HashMap getTagMap (String uno) {
         HashMap tagmap = new HashMap();
         XmlPeer peer = new XmlPeer(ElementTags.ITEXT, "lettera");
         tagmap.put(peer.getAlias(), peer);
         peer = new XmlPeer(ElementTags.PARAGRAPH, "destinatario");
         peer.addValue(ElementTags.ALIGN, ElementTags.ALIGN_RIGHT);
         tagmap.put(peer.getAlias(), peer);
         peer = new XmlPeer(ElementTags.CHUNK, "prova");
         peer.setContent(uno);
         tagmap.put(peer.getAlias(), peer);
         return tagmap;
     }
Il paragrafo viene correttamente inserito ma allineato a sinistra. 
Suggerimenti?
Ciao
Matteo

Matteo ha scritto:

Su una domanda così puntuale non so risponderti, ma ho usato iText più 
volte in vari progetti e l'ho trovata ottima e flessibilissima.
Hai provato a consultare la documentazione?
http://itextdocs.lowagie.com/tutorial/
Casomai posta più codice, da quello snippet io non riesco a capire come 
implementi la libreria.

Ho provato a leggere i vari tutorial e guide sparse per la rete ma non 
ne sono venuto a capo. Il progetto per ora è molto semplice.
C'è una classe Main che contiene il metodo omonimo:
import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
import com.lowagie.text.xml.*;
import java.io.*;
public class Main {
     public static void main(String[] args) {
         try {
             Document documento = new Document(PageSize.A4);
             PdfWriter writer = PdfWriter.getInstance(documento, new 
FileOutputStream("prova.pdf"));
             writer.setPageEvent(new LetteraSemplice());
             XmlParser.parse(documento, "modelli/lettera.xml", 
LetteraSemplice.getTagMap("ok"));
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } catch (DocumentException e) {
             e.printStackTrace();
         }
     }
}
e una classe LetteraSemplice:
import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
import com.lowagie.text.xml.*;
import java.io.*;
import java.util.HashMap;
public class LetteraSemplice extends PdfPageEventHelper {
     protected PdfImportedPage carta;
     protected PdfLayer layer;
     public void onOpenDocument(PdfWriter writer, Document document) {
         try {
             PdfReader reader = new PdfReader("modelli/cartaintestata.pdf");
             carta = writer.getImportedPage(reader, 1);
             layer = new PdfLayer("template",writer);
             layer.setOnPanel(false);
             layer.setPrint("Print", false);
         } catch (IOException w) {
             w.printStackTrace();
         }
     }
     public void onStartPage(PdfWriter writer, Document document) {
         PdfContentByte cb = writer.getDirectContent();
         cb.beginLayer(layer);
         cb.addTemplate(carta, 0, 0);
         cb.endLayer();
     }
     public static HashMap getTagMap (String uno) {
         HashMap tagmap = new HashMap();
         XmlPeer peer = new XmlPeer(ElementTags.ITEXT, "lettera");
         tagmap.put(peer.getAlias(), peer);
         peer = new XmlPeer(ElementTags.PARAGRAPH, "destinatario");
         peer.addValue(ElementTags.ALIGN, ElementTags.ALIGN_RIGHT);
         tagmap.put(peer.getAlias(), peer);
         peer = new XmlPeer(ElementTags.CHUNK, "prova");
         peer.setContent(uno);
         tagmap.put(peer.getAlias(), peer);
         return tagmap;
     }
}
Motosauro ha scritto:
