O código abaixo gera o arquivo pdf com base num arquivo xml montado em tempo de requisição.
/* * geradorPdf.java * * Created on March 31, 2002, 4:05 PM */ import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; import javax.xml.transform.TransformerFactory; import javax.xml.transform.Transformer; import javax.xml.transform.stream.StreamSource; import javax.xml.transform.stream.StreamResult; import org.apache.fop.apps.Driver; import org.apache.fop.apps.Version; /** * * @author Administrator * @version */ public class geradorPdf extends HttpServlet { /** Initializes the servlet. */ public void init(ServletConfig config) throws ServletException { super.init(config); } /** Destroys the servlet. */ public void destroy() { } /** Processes requests for both HTTP and POSTmethods. * @param request servlet request * @param response servlet response */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { ByteArrayOutputStream arquivoFo = new ByteArrayOutputStream(); ByteArrayOutputStream arquivoPdf = new ByteArrayOutputStream (); ServletOutputStream out = response.getOutputStream(); try{ // Settings do mime da página. response.setContentType("application/pdf"); response.setHeader ("Pragma", "no-cache"); response.setHeader ("Cache-Control", "no-cache"); response.setDateHeader ("Expires",0); // Encontrar o arquivo xsl para conversão. String arquivoXSL = null; String arquivoXML = null; try{ arquivoXSL = request.getParameter("xsl"); arquivoXML = request.getParameter("xml"); }catch(Exception e){ try{out.close();}catch(Exception ex){} throw new ServletException("Parâmetros xsl/xml incorretos"); } // Realiza a transformação de xsl/xml para fo. StreamSource xsltSource = new StreamSource(new File (arquivoXSL)); TransformerFactory transFact = TransformerFactory.newInstance(); Transformer transf = transFact.newTransformer(xsltSource); StreamSource dataSource = new StreamSource(new File (arquivoXML)); // Transforma as tables em XLS-FO usando XLST transf.transform(dataSource, new StreamResult(arquivoFo)); // Abasteçe uma nova stream de entrada com dados da transformação. Aqui poderíamos economizar no contentFo !!!! byte contentFo[] = arquivoFo.toByteArray(); ByteArrayInputStream arquivoFoEntrada = new ByteArrayInputStream(contentFo); // Realizar a conversão de fo para pdf. Driver driver = new Driver(new InputSource (arquivoFoEntrada), arquivoPdf); driver.setRenderer(Driver.RENDER_PDF); driver.run(); // Ajusta o tamanho do mime para browser. byte contentPdf[] = arquivoPdf.toByteArray(); response.setContentLength(contentPdf.length); // Escreva para stream de saída e encerra a operação. out.write(contentPdf); out.flush(); out.close(); }catch(Exception ex){ try{ out.close(); // Envia erro para uma página que consegue tratá-lo. request.setAttribute ("javax.servlet.jsp.jspException", ex); RequestDispatcher rd = getServletContext ().getRequestDispatcher("Erro.jsp"); rd.forward(request, response); }catch(Exception e){ } } } /** Handles the HTTP GET method. * @param request servlet request * @param response servlet response */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { processRequest(request, response); } /** Handles the HTTP POST method. * @param request servlet request * @param response servlet response */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { processRequest(request, response); } /** Returns a short description of the servlet. */ public String getServletInfo() { return "Short description"; } } > ---------- Mensagem original ----------- > > De : "Marcelo Alves" <[EMAIL PROTECTED]> > Para : <[EMAIL PROTECTED]> > Cc : > Data : Mon, 1 Apr 2002 14:36:59 -0300 > Assunto : Re: [java-list] Arquivo pdf > > Oi, > > Vc cria o PDF usando o lowagie, muda o content type do servlet para > application/pdf (eu acho q é isso) e ao inves de usar um FileOutputStream > para saida do PDF, vc usa o response.getOutputStream (se nao estou > enganado...)... Daqui a pouco mando um exemplo pra lista... > > t+ > > .: marcelo :. > > > ----- Original Message ----- > From: "Viviane" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Monday, April 01, 2002 10:45 AM > Subject: Re: [java-list] Arquivo pdf > > > > Marcelo, > > > > A minha dúvida é a seguinte: é possível a partir de uma página na internet > o > > usuário escolher uma determinada opção e o arquivo pdf ser gerado na > máquina > > dele, ou seja, no cliente ??? > > > > Grata, > > Viviane > > ----- Original Message ----- > > From: "Marcelo Alves" <[EMAIL PROTECTED]> > > To: <[EMAIL PROTECTED]> > > Cc: <[EMAIL PROTECTED]> > > Sent: Monday, April 01, 2002 9:28 AM > > Subject: Re: [java-list] Arquivo pdf > > > > > > > www.lowagie.com/iText > > > > > > > > > > > > Trabalhei bastante com isso, posso até tirar umas dúvidas. > > > > > > .: xfer :. > > > > > > ----- Original Message ----- > > > From: "Jose Ferreira de Souza Filho" <[EMAIL PROTECTED]> > > > To: <[EMAIL PROTECTED]> > > > Sent: Monday, April 01, 2002 8:15 AM > > > Subject: [java-list] Arquivo pdf > > > > > > > > > > > > > > Olá lista, > > > > > > > > alguém sabe como gerar um arquivo em pdf em Java? Existe alguma > > > > classe que cotenha métodos que façam isso? > > > > > > > > Desde já agradeço a atenção de todos. > > > > > > > > ------------------------------ LISTA > > SOUJAVA ---------------------------- > > > > http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP > > > > dúvidas mais comuns: http://www.soujava.org.br/faq.htm > > > > regras da lista: http://www.soujava.org.br/regras.htm > > > > historico: http://www.mail-archive.com/java-list% 40soujava.org.br > > > > para sair da lista: envie email para > > [EMAIL PROTECTED] > > > > > > > ------------------------------------------------------------------ ------- > > > > > > > > > > > > > ------------------------------ LISTA > SOUJAVA ---------------------------- > > > http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP > > > dúvidas mais comuns: http://www.soujava.org.br/faq.htm > > > regras da lista: http://www.soujava.org.br/regras.htm > > > historico: http://www.mail-archive.com/java-list% 40soujava.org.br > > > para sair da lista: envie email para > [EMAIL PROTECTED] > > > > ------------------------------------------------------------------ ------- > > > > > > ------------------------------ LISTA SOUJAVA --------------------- ------- > > http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP > > dúvidas mais comuns: http://www.soujava.org.br/faq.htm > > regras da lista: http://www.soujava.org.br/regras.htm > > historico: http://www.mail-archive.com/java-list%40soujava.org.br > > para sair da lista: envie email para java-list- [EMAIL PROTECTED] > > ------------------------------------------------------------------ ------- > > > > > ------------------------------ LISTA SOUJAVA ----------------------- ----- > http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu- SP > dúvidas mais comuns: http://www.soujava.org.br/faq.htm > regras da lista: http://www.soujava.org.br/regras.htm > historico: http://www.mail-archive.com/java-list%40soujava.org.br > para sair da lista: envie email para java-list- [EMAIL PROTECTED] > -------------------------------------------------------------------- ----- > > > ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------