Ho un'applet firmata che recupera un documento PDF da un servizio Web, quindi lo archivia in una cartella temporanea e lo apre su Adobe Reader. Vorrei evitare di memorizzare il file localmente, ma non so davvero come ottenerlo (sono un novizio con le applet Java).Apri "documento array byte" da un'applet Java
Se si trattasse di un'applicazione Web (ad esempio un servlet semplice), potrei semplicemente scrivere il contenuto PDF su ServletResponse
; quindi il browser lo memorizzerà nella sua cartella temporanea e lo aprirà con Adobe Reader (o qualsiasi altra applicazione associata al tipo MIME).
C'è un modo simile per farlo ... su un'applet Java?
Questo è il mio codice finora:
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"));
}
}
Qualsiasi alternativa al Desktop.open(File), che mi permette di passare un byte[]
invece di un File
?
un modo o nell'altro, dovrà essere creato il file temporaneo. Non sono sicuro di cosa non funzioni con 'Desktop.open'. È un modo perfettamente valido di fare le cose. –
+1. Non penso che tu possa evitare il file temporaneo, ma forse c'è un modo per averlo gestito dal browser (in modo che venga ripulito una volta terminato). – Thilo
È possibile creare il file temporaneo, purché sia gestito dal browser, proprio come con l'esempio ServletResponse. Quello che mi piacerebbe evitare è la creazione di diversi file PDF "da qualche parte" nell'unità locale dell'utente (ad esempio C: /temp/a-document.pdf, C: /temp/another-one.pdf, ecc.) – AJPerez