我有一個簽名的小程序,它從Web服務檢索PDF文檔,然後將其存儲在臨時文件夾中,並在Adobe Reader上打開它。我想避免在本地存儲文件,但我真的不知道如何實現它(我是一個新手與Java小程序)。從Java小程序打開「字節數組文件」
如果它是一個web應用程序(即一個簡單的servlet),我可以通過ServletResponse
寫PDF內容;那麼瀏覽器會將其存儲在其臨時文件夾中,並使用Adobe Reader(或任何與MIME類型關聯的應用程序)打開它。
有沒有類似的方法來做到這一點...在Java小程序?
這是我到目前爲止的代碼:
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"));
}
}
任何替代Desktop.open(File),讓我傳遞的byte[]
而不是File
?
這種或那種方式,臨時文件將需要創建。我不確定'Desktop.open'有什麼問題。這是一種非常有效的做事方式。 – 2012-07-23 09:50:59
+1。我不認爲你可以避免臨時文件,但也許有一種方法可以讓它通過瀏覽器進行管理(以便在完成時清理它)。 – Thilo 2012-07-23 09:51:22
可以創建臨時文件,只要它由瀏覽器管理,就像使用ServletResponse示例一樣。我想避免的是在用戶的本地驅動器中創建幾個PDF文件(即C:/temp/a-document.pdf,C:/temp/another-one.pdf等) – AJPerez 2012-07-23 10:40:23