2009-12-27 24 views

risposta

2

Per quanto ne so, questo non è direttamente possibile. È possibile utilizzare Jasper Reports per generare un pdf sul lato server. Oppure puoi usare PrintPDF che è un plugin firefox per crearne uno dal browser web.

+0

+1 per i report jasper, e se stai usando jfree chart per i tuoi grafici, i report jasper li supporteranno, e puoi usare gli stessi grafici nel tuo report/pdf. – broschb

+0

jasper usa iText per generare il PDF - a meno che non ci sia un altro motivo per usare Jasper, sarebbe meglio saltare direttamente a iText –

7

Il modo più semplice è probabilmente quello di capture the HTML utilizzando un Filter e convertire che in PDF utilizzando un'API adatto, quindi restituire i dati application/pdf dalla Filter. Il supporto per invio parziale di IceFaces può essere probabilmente utilizzato per acquisire un sottoinsieme dell'output dell'albero dei componenti, ma probabilmente dovrai studiare i dettagli delle richieste HTTP IceFaces per capire come sfruttarlo.

+0

+1 per dettagli su come catturare l'HTML –

+2

Questo è davvero il modo, ma non è così semplice come Assomiglia a. Per maggiori dettagli: http://stackoverflow.com/questions/1963158/capture-generated-dynamic-content-at-server-side/1963571#1963571 – BalusC

2

probabilmente avrete bisogno dei seguenti:

  1. Capture the (X) output HTML della pagina. Questo può essere fatto tramite il seguente codice in un servlet tuo:

    InputStream is = new URL("http://localhost/foo/page.jsf").openStream(); 
    
  2. trasformare il contenuto acquisito in pdf. Vedi il renderer Flying Saucer (e inoltre - this thread)

  3. "Invia" il pdf generato. Cioè, è sufficiente scrivere (di stampa) il vostro pdf alla response.getOutputStream(), e impostare un'intestazione Content-Type - response.setContentType("application/pdf")

Problemi correlati