L'angolo del N00b
Vuoi reagire a questo messaggio? Crea un account in pochi click o accedi per continuare.

L'angolo del N00b

Appunti di programmazione per principianti e non
 
IndiceIndice  Ultime immaginiUltime immagini  CercaCerca  RegistratiRegistrati  AccediAccedi  

 

 Generare PDF da pagina HTML con CSS dedicato

Andare in basso 
AutoreMessaggio
Ale




Maschio
Numero di messaggi : 24
Età : 45
Data d'iscrizione : 23.02.09

Generare PDF da pagina HTML con CSS dedicato Empty
MessaggioTitolo: Generare PDF da pagina HTML con CSS dedicato   Generare PDF da pagina HTML con CSS dedicato Icon_minitimeMer 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/
Torna in alto Andare in basso
 
Generare PDF da pagina HTML con CSS dedicato
Torna in alto 
Pagina 1 di 1
 Argomenti simili
-
» Creare più copie di 1 pagina HTML
» una pagina PhP

Permessi in questa sezione del forum:Non puoi rispondere agli argomenti in questo forum.
L'angolo del N00b :: Html Netbook :: Soluzioni-
Vai verso: