Código java:
Ver original
package mx.com.lmp.erp.print; import java.awt.BorderLayout; import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.URL; import java.net.URLConnection; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.ArrayList; import java.util.List; import javax.swing.JFrame; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRExporterParameter; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperPrintManager; import net.sf.jasperreports.engine.export.JRPrintServiceExporter; import net.sf.jasperreports.engine.export.JRPrintServiceExporterParameter; import net.sf.jasperreports.engine.print.JRPrinterAWT; import net.sf.jasperreports.engine.xml.JRPrintXmlLoader; import net.sf.jasperreports.view.JRViewer; /** Initializes the applet AppletPrint */ public void init() { try { this.urlService = getParameter("urlService"); public void run() { initComponents(); } }); ex.printStackTrace(); } } private void initComponents() { jBtnImprimir.setText("Imprimir"); jBtnImprimirActionPerformed(evt); } }); jPanel1.add(jBtnImprimir); } comunicacionServer();//para recibir los datos del server } // Variables declaration - do not modify // End of variables declaration //Guardara la url del servlet al que se comunicara para imprimir private void comunicacionServer(){ int in=0; long tamFile=0; /* Primero creamos la URL para la conexión. Tiene sentido construir la dirección de esta forma tan "complicada" puesto que el applet solo puede establecer conexiones con su servidor, y así, al construir la dirección dinámicamente, no tenemos que retocar el código al irnos a otro servidor. En todo caso, lo siguiente sería válido: URL direccion = new URL ("http://www.javahispano.com/servlet/MiServlet"); */ int puerto = pagina.getPort(); //String servlet = "/servlet/MiServlet";/ServletEnviaReport if ( this.urlService != null && !this.urlService.equals("")) servlet = this.urlService; else servlet = "/PruebaApplet/ServletEnviaReportes"; try { conexion = direccion.openConnection(); ex.printStackTrace(); } /*Lo siguiente es decirle al navegador que no use su cache para esta conexión, porque si lo hace vamos a tener un página estatica, y para eso no nos metemos en estos líos ;-). */ conexion.setUseCaches(false); /* Ahora añadimos todas las cabeceras de HTTP que necesitemos, Cookies, contenido, autorizacion, etc. con el método: conexion.setRequestProperty ("cabecera", "valor"); Consultar la especificación de HTTP para más detalles. Por ejemplo, para decir que preferentemente hablamos español: */ conexion.setRequestProperty("Accept-Language", "es"); try { /* Procesamos la información de la forma adecuada, según se trate de datos ASCII o binarios. */ //Obtenemos el stream de entrada para leer la informacion que nos envie el //server // Recibo el numero de archivos que enviara el servidor int numArchivosRecibir = dataIn.readInt(); // Recibe los archivos for(int k = 0; k < f =" this.fileTemp(dataIn.readUTF(),null);" tamfile =" dataIn.readLong();" ouputstream =" new" j =" 0;" datain =" null;" buffer =" null;" ouputstream =" null;" inputstream =" null;" jasperprintlist =" new" j =" 0;" inputstream =" new"> /*Aqui es donde se cargan los datos recibidos del server y se lanza a la impresion*/ JasperPrint jsprint = JRPrintXmlLoader.load(inputStream); JasperPrintManager.printReport(jsprint,true); } } catch (JRException e1) { e1.printStackTrace(); } //borramos los archivos temporales fi.delete(); } ex.printStackTrace(); } } try { comunicacionServer(urlConParametros); e.printStackTrace(); return false; } return null; } }); } this.urlService = urlConParametros; this.comunicacionServer(); } try { ex.printStackTrace(); return null; } } }