L'angolo del N00b

Appunti di programmazione per principianti e non
 
IndiceIndice  CalendarioCalendario  FAQFAQ  CercaCerca  Lista utentiLista utenti  GruppiGruppi  RegistrarsiRegistrarsi  AccediAccedi  

Condividere | 
 

 Generare PDF da pagina HTML con CSS dedicato

Vedere l'argomento precedente Vedere l'argomento seguente Andare in basso 
AutoreMessaggio
Ale



Maschile
Numero di messaggi : 24
Età : 38
Data d'iscrizione : 23.02.09

MessaggioOggetto: Generare PDF da pagina HTML con CSS dedicato   Mer Mag 13, 2009 4:47 pm

Mi sono trovato a dover fare 1 pulsantino "crea pdf" di 1 pagina internet, per non impazzire a decodificare il codice html prima di utilizzarlo con itext ridisegnandomi tutti i dati ke mi interessavano, ho trovato 1 sistema molto interessante che permette di passarmi il codice html ad 1 servlet che lo decodifica e crea 1 pdf, altra cosa molto bella è che si può abbinare 1 CSS al vostro pdf!

Trovate altre informazioni, e soprattutto le librerie da usare a quest'indirizzo:
https://xhtmlrenderer.dev.java.net/

Nella mia pagina jsp ho creato 1 StringBuffer sb contenente il codice html della pagina e poi ho settato come attributo della sessione la String Buffer ( session.setAttribute("car1",sb); ). In questo modo dalla servlet richiamo l'attributo con: HttpSession session = request.getSession(); StringBuffer sb = (StringBuffer) session.getAttribute("car1");


Codice della servlet:
Codice:

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.xhtmlrenderer.pdf.ITextRenderer;

public class PDFServlet extends HttpServlet
{

   public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
   {
      doPost(request, response);
   }
   
   public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
   {
      
      HttpSession session = request.getSession();
      StringBuffer sb = (StringBuffer) session.getAttribute("car1");
      
      response.setContentType("application/pdf");
      
      try
      {
            ByteArrayInputStream Bis1 = new ByteArrayInputStream(sb.toString().getBytes("UTF-8"));
            DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
            Document doc = builder.parse(Bis1);
            ITextRenderer renderer = new ITextRenderer();
            renderer.setDocument(doc, null);
            renderer.layout();
            OutputStream os = response.getOutputStream();
            renderer.createPDF(os);
            os.close();
            session.setAttribute("car1",null);
      }
      catch (Exception ex)
      {
            ex.printStackTrace();
      }
   }
   
}

per poter riconoscere correttamente alcuni caratteri particolari senza incorrere in errori quando create il codice html da passare alla servlet nel codice html è importante inserire alla prima riga (prima dell'head):
Codice:
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" 'LINK AI FILE DTD'>
dove link ai file dtd indica la cartella in cui dovrete inserire i file .dtd e .ent che contengono la decodifica dei caratteri speciali.
sono 4 file:
- xhtml-lat1.ent
- xhtml-special.ent
- xhtml-symbol.ent
- xhtml1-transitional.dtd
li potete scaricare su
http://www.w3.org/
Tornare in alto Andare in basso
Vedere il profilo dell'utente
 
Generare PDF da pagina HTML con CSS dedicato
Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto 
Pagina 1 di 1
 Argomenti simili
-
» Codice HTML bordo pagina
» Codice CSS per inserire un immagine di sfondo a un link di un argomento
» Come recuperare una pagina Facebook rubata - Tutorial
» come aprire la pagina iniziale di facebook senza interferire con quella di un altro (senza toglierlo, lasciarlo aperto) ???
» Codice HTML tasto cerca con immagine al posto dell'invio - Forum attivo

Permesso di questo forum:Non puoi rispondere agli argomenti in questo forum
L'angolo del N00b :: Html Netbook :: Soluzioni-
Andare verso: