Tengo un applet firmado que recupera un documento PDF de un servicio web, luego lo almacena en una carpeta temporal y lo abre en Adobe Reader. Me gustaría evitar almacenar el archivo localmente, pero realmente no sé cómo lograrlo (soy un novato con los applets de Java).Abrir el "documento de matriz de bytes" desde un applet de Java
Si fuera una aplicación web (es decir, un servlet simple), podría simplemente escribir el contenido PDF en el ServletResponse
; luego el navegador lo almacenaría en su carpeta temporal y lo abriría con Adobe Reader (o cualquier aplicación asociada con el tipo MIME).
¿Hay alguna manera similar de hacer esto ... en un applet de Java?
Este es mi código hasta ahora:
public class MyListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
// Retrieve the document contents
byte[] content = webService.getPdfDocument(...);
// Write to file
File f = new File("my-document-filename.pdf");
FileOutputStream fos = new FileOutputStream(f);
fos.write(content);
fos.close();
// Open the file
Desktop.getDesktop().open(new File("my-document-filename.pdf"));
}
}
Cualquier alternativa a Desktop.open(File), lo que me permite pasar un byte[]
en lugar de un File
?
un modo u otro, será necesario crear el archivo temporal. No estoy seguro de qué pasa con 'Desktop.open'. Es una forma perfectamente válida de hacer las cosas. –
+1. No creo que pueda evitar el archivo temporal, pero tal vez haya una forma de que el navegador lo administre (para que se limpie cuando termine). – Thilo
Está bien crear el archivo temporal, siempre y cuando sea administrado por el navegador, al igual que con el ejemplo de ServletResponse. Lo que me gustaría evitar es crear varios archivos PDF "en algún lugar" en la unidad local del usuario (es decir, C: /temp/a-document.pdf, C: /temp/another-one.pdf, etc.) – AJPerez