Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    22

    librerie richieste da lowagie PDF

    Salve, è la prima volta che mi attingo a creare in java un pdf.
    Cercando su internet ho valutato di usare la libreria lowagie, solo che ho un problema: la classe pdfReader che viene richiamata dal metodo (document.close()) richiede il package di bouncy castle cms, che io non ho. Dato che su vari tutorial non viene spiegato dell'importazione di questa libreria, voi dite che ho sbagliato libreria o c'è qualche altra versione di lowagie non la richiede?

    Grazie mille..

    Salve

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    allora, BouncyCastle è una famosissima libreria per la gestione della crittografia... iText / Lowagie si occupa di PDF... mi viene in mente che ti possano servire le classi di BouncyCastle solo se prevedi di utilizzare PDF firmati/protetti o che... è il tuo caso? Altrimenti spiega un po' che stai cercando di fare (magari postando del codice)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    22
    Ecco un pezzo della classe che dovrei creare:

    import java.io.FileNotFoundException;
    import com.lowagie.text.Document;
    import com.lowagie.text.DocumentException;
    import com.lowagie.text.Font;
    import com.lowagie.text.PageSize;
    import com.lowagie.text.Paragraph;
    import com.lowagie.text.Phrase;
    import com.lowagie.text.Section;
    import com.lowagie.text.pdf.PdfWriter;

    import java.io.FileOutputStream;

    public class CreatePdf {

    private Paragraph paragrafo;
    private Document document;

    public CreatePdf(){
    this.initPdf();
    }

    private void initPdf(){
    try {
    document = new Document();
    PdfWriter.getInstance(document, new FileOutputStream("filepdf.pdf"));
    document.open();
    document.newPage();
    setNewParagraph();
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    System.out.println("Errore, impossibile creare il file pdf" + e);
    e.printStackTrace();
    } catch (DocumentException e) {
    // TODO Auto-generated catch block
    System.out.println("Errore, nella creazione del file pdf" + e);
    e.printStackTrace();
    } catch (Exception e ){
    System.out.println("Errore, nella creazione del file pdf" + e);
    }
    }

    public void setNewParagraph(){
    paragrafo = new Paragraph();
    }

    /*
    * Viene richiamato da una classe di parser xml.
    * Deve aggiungere i dati dell'xml
    */
    public void addParagraph(String valore){
    paragrafo.add(new Paragraph("Valore" + valore));
    try {
    document.add(paragrafo);
    System.out.println("Aggiunto valore campo="+ valore);
    } catch (DocumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }

    /*
    * Alla fine del parser xml, chiude il pdf
    * e in questa fase che da l'errore, perché non trova la classe pdfReader,
    * pdfReader cerca di importare la libreria bouncycastle che appiunto a me non serve
    *
    */
    public void closePdf(){
    if(document.isOpen()){
    document.close();
    }else{
    System.out.println("Impossibile chiudere il document, file non aperto");
    }
    }
    }

    Grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    usa il tag CODE per postare codice, così si mantiene la formattazione.
    Comunque, partendo dal tuo codice (e scaricando la versione aggiornata di iText)


    iText 5.2(?)

    si riesce a compilare ed eseguire tranquillamente.

    codice:
    import java.io.FileNotFoundException;
    import com.itextpdf.text.*;
    import com.itextpdf.text.pdf.*;
    
    import java.io.FileOutputStream;
    
    //cambiato nome alla classe
    public class Main  {
    	
    	private Paragraph paragrafo;
    	private Document document;
    	
    	public Main(){
    		this.initPdf();
    	}
    	
    	private void initPdf(){
    		try {
    			document = new Document();			
    			PdfWriter.getInstance(document, new FileOutputStream("filepdf.pdf"));
    			document.open();
    			document.newPage();			
    			setNewParagraph();
    //aggiunte 2 righe
                            addParagraph("Hello there!");
                            closePdf();
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			System.out.println("Errore, impossibile creare il file pdf" + e);
    			e.printStackTrace();
    		} catch (DocumentException e) {
    			// TODO Auto-generated catch block
    			System.out.println("Errore, nella creazione del file pdf" + e);
    			e.printStackTrace();
    		} catch (Exception e ){
    			System.out.println("Errore, nella creazione del file pdf" + e);
    		}
    	}
    	
    	public void setNewParagraph(){
    		paragrafo = new Paragraph();
    	}
    	
    	/*
    	 *     Viene richiamato da una classe di parser xml.
             *     Deve aggiungere i dati dell'xml
    	 */
    	public void addParagraph(String valore){		
    		paragrafo.add(new Paragraph("Valore" + valore));
    		try {
    			document.add(paragrafo);
    			System.out.println("Aggiunto valore campo="+ valore);
    		} catch (DocumentException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    				
    	}
    
    	/*
    	 *     Alla fine del parser xml, chiude il pdf
             *     e in questa fase che da l'errore, perché non trova la classe pdfReader,
             *     pdfReader cerca di importare la libreria bouncycastle che appiunto a me non                         serve
             * 
    	 */
    	public void closePdf(){
    		if(document.isOpen()){
    			document.close();	
    		}else{
    			System.out.println("Impossibile chiudere il document, file non aperto");
    		}		
    	}
    //aggiunto main        
            public static void main (String[] args) {
                new Main();
            }
            
    }
    non chiede Bouncy Castle né altro... quindi il problema risiede da qualche altra parte.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    22
    Ciao Andrea1979, scusami se rispondo adesso ho avuto un po di impegni, comunque volevo riferirti che scaricando la libreria jar di itext funziona. Il problema era che io avevo scaricato il source code della libreria, che infatti, non so perché, chiede la libreria bouncycastle.
    Ora però mi sono imbattuto in un altro problema che sto cercando di risolvere: devo scrivere una descrizione particolarmente lunga, che deve essere scritta in una posizione X fissa e che non deve superare una certa larghezza, se la supera deve scrivere su un nuovo rigo il resto della descrizione sempre partendo dalla posizione fissa X.
    Se qualcuno ha avuto qualche esigenza del genere ed avesse risolto con la libreria di iText ne sono grato se mi descrivesse qualche soluzione. Io nel frattempo cerco di risolvere e se dovessi risolvere posterò la mia soluzione.
    Grazie

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da newforum
    Ciao Andrea1979, scusami se rispondo adesso ho avuto un po di impegni, comunque volevo riferirti che scaricando la libreria jar di itext funziona. Il problema era che io avevo scaricato il source code della libreria, che infatti, non so perché, chiede la libreria bouncycastle.
    Beh... il sorgente è quello di tutta la libreria, che, per le funzioni di crittazione, usa BoucyCastle. Se parti dal sorgente, il compilatore tenterà di compilarla e per farlo va a vedere se vi sono tutti i riferimenti necessari... quindi va in cerca anche di BoucyCastle (indipendentemente dal fatto che tu richieda la funzione di crittazione o meno... lui deve compilare la libreria, cosa tu poi vada a usare di tale libreria è un discorso diverso).

    Per il problema della scritta lunga, puoi usare una PdfPTable dicendo di scrivere la frase nel punto X,Y, per una larghezza massima di WIDTH. Si arrangia la PdfPTable ad allungarsi verso il basso all'occorrenza.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    22
    Grazie mille dell'aiuto.. Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.