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;
public class AppletPrint
extends javax.
swing.
JApplet {
/** Initializes the applet AppletPrint */
public void init() {
try {
this.urlService = getParameter("urlService");
public void run() {
initComponents();
}
});
ex.printStackTrace();
}
}
private void initComponents() {
jPanel1
= new javax.
swing.
JPanel();jBtnImprimir
= new javax.
swing.
JButton();
jBtnImprimir.setText("Imprimir");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) { jBtnImprimirActionPerformed(evt);
}
});
jPanel1.add(jBtnImprimir);
}
private void jBtnImprimirActionPerformed
(java.
awt.
event.
ActionEvent evt
) { comunicacionServer();//para recibir los datos del server
}
// Variables declaration - do not modify
private javax.
swing.
JButton jBtnImprimir
; private javax.
swing.
JPanel jPanel1
; // 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");
*/
URL pagina
= this.
getCodeBase(); String protocolo
= pagina.
getProtocol(); String servidor
= pagina.
getHost(); int puerto = pagina.getPort();
//String servlet = "/servlet/MiServlet";/ServletEnviaReport
if ( this.urlService != null && !this.urlService.equals(""))
servlet = this.urlService;
else
servlet = "/PruebaApplet/ServletEnviaReportes";
try {
direccion
= new URL(protocolo, servidor, puerto, servlet
);conexion = direccion.openConnection();
System.
out.
println(" Url del urlService " + direccion.
toString()); 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();
System.
out.
println(" Numero de archivos para imprimir " + numArchivosRecibir
);
// Recibe los archivos
File files
[] = new File[numArchivosRecibir
];
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();
}
}
public void ejecutaConJavascript
(final String urlConParametros
){
try {
comunicacionServer(urlConParametros);
e.printStackTrace();
return false;
}
return null;
}
});
}
public void comunicacionServer
(String urlConParametros
) { this.urlService = urlConParametros;
this.comunicacionServer();
}
try {
return File.
createTempFile(name,suffix
); ex.printStackTrace();
return null;
}
}
}