Ich habe ein signiertes Applet, das ein PDF-Dokument von einem Webdienst abruft, speichert es in einem temporären Ordner und öffnet es auf Adobe Reader. Ich möchte vermeiden, die Datei lokal zu speichern, aber ich weiß wirklich nicht, wie man es erreicht (ich bin ein Neuling mit Java Applets).Öffnen Sie "Byte-Array-Dokument" aus einem Java-Applet
Wenn es eine Webanwendung wäre (d. H. Ein einfaches Servlet), könnte ich einfach den PDF-Inhalt über die ServletResponse
schreiben; dann speichert der Browser es in seinem temporären Ordner und öffnet es mit Adobe Reader (oder welcher Anwendung auch immer dem MIME-Typ zugeordnet ist).
Gibt es einen ähnlichen Weg ... auf einem Java-Applet?
Dies ist mein Code so weit:
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"));
}
}
Jede Alternative zu Desktop.open(File), so dass ich ein byte[]
anstelle eines File
passieren?
eine oder andere Weise, die temporäre Datei müssen erstellt werden. Ich bin mir nicht sicher, was mit 'Desktop.open' los ist. Es ist eine absolut gültige Art, Dinge zu tun. –
+1. Ich glaube nicht, dass Sie die temporäre Datei vermeiden können, aber vielleicht gibt es eine Möglichkeit, sie vom Browser verwalten zu lassen (so dass sie nach dem Löschen bereinigt wird). – Thilo
Es ist in Ordnung, die temporäre Datei zu erstellen, solange sie vom Browser verwaltet wird, genau wie im ServletResponse-Beispiel. Was ich vermeiden möchte, ist das Erstellen mehrerer PDF-Dateien "irgendwo" im lokalen Laufwerk des Benutzers (zB C: /temp/a-document.pdf, C: /temp/another-one.pdf, usw.) – AJPerez