Buen Día, Hector me he topado con ese mismo problema, hasta el momento lo que había hecho es la manera difícil, crear un pdf en una carpeta temporal pero si es muy tardado, algún ejemplo que me puedas aportar para entender como hacerlo al vuelo?, te lo agradecería.
Saludos
dejo mi codigo:
Saludos
dejo mi codigo:
Código [Seleccionar]
<%@page contentType = "text/html" pageEncoding="UTF-8"%>
<%@page import = "java.io.IOException"%>
<%@page import = "java.io.OutputStream"%>
<%@page import = "java.io.FileOutputStream"%>
<%@page import = "java.io.File"%>
<%@page import = "java.io.BufferedWriter"%>
<%@page import = "java.io.OutputStreamWriter"%>
<%@page import = "javax.servlet.ServletException"%>
<%@page import = "javax.servlet.http.HttpServlet"%>
<%@page import = "javax.servlet.http.HttpServletRequest"%>
<%@page import = "javax.servlet.http.HttpServletResponse"%>
<%@page import = "org.xhtmlrenderer.pdf.ITextRenderer"%>
<%@page import = "javax.servlet.http.HttpSession"%>
<%@page import = "java.sql.SQLException"%>
<%@page import = "java.io.PrintWriter"%>
<%@page import = "java.util.Vector"%>
<%@page import = "java.io.InputStream"%>
<%@page import = "java.io.FileInputStream"%>
<%@ page import="java.util.Vector" %>
<%@page import="java.util.ArrayList"%>
<%@page import= "java.sql.Timestamp"%>
<%@page import= "java.util.Date"%>
<%@page import= "java.text.SimpleDateFormat"%>
<%
String strCadena = "";
String htmlPDF = "";
String strOrientacion = "";
String strResultado = "";
String strDependencia = "";
String DATE_FORMAT = "yyMMddHHmmss";
String fecha = "";
int iPagina = 1;
int iTotalEmpleados = 0;
int iPaginaInicio = 0;
int iPaginaFinal = 0;
long iTotalPaginas = 0;
int iOpcion = 0;
int iRangoDesde = 0;
int iRangoHasta = 0;
int iOrdenar = 1;
int iRegsXpagina = 10000;
ArrayList vcResultado = null;
Vector vcColumnas = null;
int iColumnas = 0;
File inputFile;
ResultSQL result = null;
try{
if (request.getParameter("input-opcion")!= null
&& !request.getParameter("input-opcion").equals("undefined")){
String tmp = request.getParameter("input-opcion");
iOpcion = Integer.parseInt(tmp);
}
if (iOpcion == 4){
if (request.getParameter("input-rangoDesde")!= null
&& !request.getParameter("input-rangoDesde").equals("undefined")){
iRangoDesde = Integer.parseInt(request.getParameter("input-rangoDesde"));
}
if (request.getParameter("input-rangoHasta")!= null
&& !request.getParameter("input-rangoHasta").equals("undefined")){
iRangoHasta = Integer.parseInt(request.getParameter("input-rangoHasta"));
}
}else{
if (request.getParameter("input-buscarCadena")!= null
&& !request.getParameter("input-buscarCadena").equals("undefined")){
strCadena = request.getParameter("input-buscarCadena");
}
}
if(request.getParameter("ordenar")!= null
&& !request.getParameter("ordenar").equals("")
&& !request.getParameter("ordenar").equals("undefined")){
iOrdenar = Integer.parseInt(request.getParameter("ordenar"));
}
if (request.getParameter("orientacion")!= null
&& !request.getParameter("orientacion").equals("undefined")){
strOrientacion = request.getParameter("orientacion");
}
//**XHTML
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
fecha += sdf.format(date);
inputFile = new File(getServletContext().getRealPath("tmp/temporal"+fecha+".xhtml"));
if(!inputFile.exists()){
inputFile.createNewFile();
}
result = new ResultSQL();
result.setStrSever(request.getHeader("host"));
result.setStrUbicacion(getServletContext().getRealPath("").toString());
result.setiRegistrosXPagina(iRegsXpagina);
result.resultSQLConecta("logsweb");
String strTempEmpleados = "";
if (iOpcion != 4){
vcResultado = (ArrayList) result.getConsultaEmpleados(strCadena, iOpcion, false, iPagina, iOrdenar, strOrientacion, true);
}
else{
vcResultado = (ArrayList) result.getConsultaEmpleadosRangos(iRangoDesde,iRangoHasta, false, iPagina, iOrdenar, strOrientacion, true);
}
Empleado empleado = null;
strResultado +=" <div id='tbConsultasRecibidas' class='tabla-seguimiento'> "+
" <table class='tabla' id='tbConsultasRecibidas-tabla' align='center'>"+
" <thead>"+
" <tr class='thead'>";
if (iOpcion != 2){
strResultado +=" <th>Dependencia</th>"+
" <th>Nombre</th>"+
" <th>Puesto</th>"+
" <th>Sueldo Bruto (Incluye prestaciones)</th>"+
" <th>Prima Vacacional</th>"+
" <th>Aguinaldo</th>"+
" <th>Pagos Anuales</th>"+
" </tr>"+
" </thead>"+
" <tbody>";
}
else{
strResultado +=" <th>Nombre</th>"+
" <th>Puesto</th>"+
" <th>Sueldo Bruto (Incluye prestaciones)</th>"+
" <th>Prima Vacacional</th>"+
" <th>Aguinaldo</th>"+
" <th>Pagos Anuales</th>"+
" </tr>"+
" </thead>"+
" <tbody>";
}
for(int i = 0 ; i < vcResultado.size(); i++){
empleado = (Empleado) vcResultado.get(i);
String strOpcion = "";
if (iOpcion != 2){
strResultado += "<tr class='fila1'> "+
" <td id='cadena'>"+empleado.getStrDependencia() + "</td>"+
" <td id='cadena'>"+empleado.getStrNombre() + "</td>"+
" <td id='cadena'>"+empleado.getStrPuesto() + "</td>"+
" <td id='moneda'>"+empleado.getStrSueldo() + "</td>"+
" <td id='moneda'>"+empleado.getStrPrimaVacacional() + "</td>"+
" <td id='moneda'>"+empleado.getStrAguinaldo() + "</td>"+
" <td id='moneda'>"+empleado.getStrPagosAnuales() + "</td>";
strResultado += "</tr>" ;
}else{
strResultado += "<tr class='fila1'> "+
" <td id='cadena'>"+empleado.getStrNombre() + "</td>"+
" <td id='cadena'>"+empleado.getStrPuesto() + "</td>"+
" <td id='moneda'>"+empleado.getStrSueldo() + "</td>"+
" <td id='moneda'>"+empleado.getStrPrimaVacacional() + "</td>"+
" <td id='moneda'>"+empleado.getStrAguinaldo() + "</td>"+
" <td id='moneda'>"+empleado.getStrPagosAnuales() + "</td>";
strResultado += "</tr>" ;
strDependencia = empleado.getStrDependencia().toUpperCase();
}
}
strResultado+=" </tbody> "+
" <tfoot> "+
" </tfoot> "+
" </table> "+
" </div>";
htmlPDF += "<!DOCTYPE html> "+
"<html> "+
"<head> "+
"<meta charset='UTF-8'></meta> "+
"<title>Sueldos de Personal</title> "+
"<link rel='stylesheet' media='print' href='../css/print.css' type='text/css'></link> "+
"</head> "+
"<body> "+
"<div class='contenedor-Principal'> "+
" <div class='titulos'> "+
if (iOpcion == 2){
htmlPDF +=" <h4>"+strDependencia+"</h4> ";
}
htmlPDF +=" </div> "+
" <br/> "+
" <br/> "+
" <br/> "+
strResultado+
"</div> "+
"</body> "+
"</html>";
BufferedWriter Fescribe=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(inputFile,false), "utf-8"));
Fescribe.write(htmlPDF);
Fescribe.close();
//***PDF
String outputFile = getServletContext().getRealPath("tmp/sueldosplantilla"+ fecha +".pdf");
OutputStream os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(inputFile);
renderer.layout();
renderer.createPDF(os);
os.close();
//***Borrar XHTML
if(inputFile.exists()){
inputFile.delete();
}
}catch(Exception e){
out.println("-1");
Bitacora bitacora = new Bitacora();
bitacora.setStrServer(request.getHeader("host"));
bitacora.setStrUbicacion(getServletContext().getRealPath("").toString());
bitacora.setITipoBitacora(1);
bitacora.setStrInformacion(e, request.getServletPath());
bitacora.grabaBitacora();
}finally{
}
%>
<!DOCTYPE html>
<html>
<head>
<title>
</title>
<script type='text/javascript' src='js/jquery-1.8.2.js'></script>
<script type="text/javascript">
window.location.replace("../tmp/sueldosplantilla<%=fecha%>.pdf");
</script>
</head>
<body>
<header>Header</header>
<div id='content'>Content</div>
<div id='footer'>Footer</div>
</body>
</html>