Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JSP] Visualizzare Pdf con struts

    Ciao a tutti.

    Nel sito che sto realizzando sto cercando di visualizzare un file .pdf creato da me dinamicamente.

    Ho trovato le librerie per pdf di com.lowagie.

    Tramite una servlet sono riuscita a creare il file su filesystem e linkandolo (o settando un response.sendRedirect e passando come parametro il percoso alla fine del doGet/doPost della servlet) a visualizzarlo.

    Sapreste come fare in modo che venga creato un documento pdf e visualizzato senza memorizzarlo su filesystem?
    In alternativa sapere come si cancella il file da filesystem.

    Grazie
    :adhone:

  2. #2
    Se a qualcuno può interessare ho scelto questa soluzione:

    La pagina principale ha un input di tipo button che (una volta cliccato) tramite il javascript window.open chiama una Action che crea il file pdf sul filesystem e, se la creazione è andata a buon fine, passa il controllo ad una pagina jsp.

    Nella pagina jsp creata ho aggiunto un evento all'onload che apre il file pdf direttamente.

    Se qualcuno ha delle idee su come evitare questo passaggio e sa come restituire il file alla pagina senza memorizzarlo su filesystem (così come si fa quando si creano immagini dinamiche) o ha altre idee per risolvere il mio problema... sono qui.

  3. #3
    Ho risolto questo mio problema per il quale avevo utilizzato (malvolentieri) la soluzione mostrata sopra.

    Non ho capito di preciso quale fosse il problema penso che l'errore da non compiere sia quello di aggiungere questa riga di codice prima di cominciare a creare il documento.
    codice:
    response.setContentType("application/pdf");
    Il seguente codice crea un documento pdf senza memorizzarlo su filesystem e lo invia al client che lo visualizza direttamente in una nuova finestra del browser. Posto il tutto perchè ci ho perso la testa x parekkio tempo e mi farebbe piacere se servisse a qualcuno.

    codice:
    import com.lowagie.text.pdf.*;
    import com.lowagie.text.Document;
    import com.lowagie.text.PageSize;
    import com.lowagie.text.html.HtmlWriter;
    import com.lowagie.text.HeaderFooter;
    import com.lowagie.text.Phrase;
    import com.lowagie.text.*; 
    
    import java.util.*;
    
    import java.io.*;
    import javax.servlet.http.*;
    import org.apache.struts.action.*;
    import org.apache.struts.util.MessageResources;
    
    
    /**
     * Creiamo il documento pdf dell'ordine.
     */
    public class PrintOrderAction extends Action{
       
      public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
      throws Exception {
        
        response.setHeader("pragma", "nocache");
        response.setHeader("Transfer-Encoding","chunked");
        response.addHeader("content-disposition", "filename=text.pdf");
        response.setContentType("application/pdf");
        
        
        Document document = new Document(PageSize.A4, 50, 50, 50, 50);
        try {
          PdfWriter.getInstance(document, response.getOutputStream());
          
          // we add some meta information to the document
          document.addAuthor("kibuz.com");
          document.addSubject("You order.");
          
          // we define a header and a footer
          HeaderFooter header = new HeaderFooter(new Phrase("Ordine."), false);
          HeaderFooter footer = new HeaderFooter(new Phrase("This is page "), new Phrase("."));
          footer.setAlignment(Element.ALIGN_CENTER);
          document.setHeader(header);
          document.setFooter(footer);
          
          
          // we open the document for writing
          document.open();
          document.add(new Paragraph("Hello world --->>>>"));
          document.add(new Paragraph("varie scritte a scelta");
        }
        catch(DocumentException de) {
          System.err.println(de.getMessage());
        }
        
        document.close();
        return null;
      }
    }
    Faccio notare che qualsiasi cosa (null o ActionForward) venga restituito la visualizzazione del file va sempre a buon fine.
    ..::200 post il 1 settembre 2004::..
    ..::100 13/07/2004::..
    ..): Web Site (pazienza però) ..
    VASCO castiga chi non lecca la FIGA

  4. #4
    Sfrutto questo mio vecchio 3d (poco frequentato) per un problema che ho riscontrato.

    La riga di codice seguente
    codice:
    response.addHeader("content-disposition", "filename=text.pdf");
    non fa il suo dovere. Lo scopo di questa istruzione è quello di dare un nome al file creato e questo nome viene suggerito nel momento in cui si prova a memorizzare il file.
    Non riesco ad ottenere il risultato e il nome suggerito è il nome della Action che crea il flusso di dati.

    Lo stesso codice funziona con le immagini e quando suggerisco il nome di un file ad una gif questo viene visualizzato quando cerco di memorizzare il file.

    ..::200 post il 1 settembre 2004::..
    ..::100 13/07/2004::..
    ..): Web Site (pazienza però) ..
    VASCO castiga chi non lecca la FIGA

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.