5

WebサービスからPDFドキュメントを取得し、それを一時フォルダーに保存して、AdobeReaderで開く署名付きアプレットを作成しました。ファイルをローカルに保存することは避けたいのですが、それを実現する方法が本当にわかりません(私はJavaアプレットの初心者です)。

ServletResponseWebアプリケーション(つまり、単純なサーブレット)の場合は、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?の代わりに渡すことができます。

4

1 に答える 1

2
  1. Adobe Reader は URL:s を処理できるため、ドキュメントの一時的な (?) URL を作成する方法になる可能性があります。

  2. File.createTempFileそれ以外の場合は、API から一時ファイルを使用して作成できます。

    指定されたプレフィックスとサフィックス文字列を使用してその名前を生成し、指定されたディレクトリに新しい空のファイルを作成します。このメソッドが正常に返された場合、次のことが保証されます。

    1. 返された抽象パス名が示すファイルは、このメソッドが呼び出される前に存在しませんでした。
    2. このメソッドもそのバリアントも、現在の仮想マシンの呼び出しで同じ抽象パス名を返すことはありません。

    このメソッドは、一時ファイル機能の一部のみを提供します。このメソッドで作成されたファイルが自動的に削除されるようにするには、deleteOnExit() メソッドを使用します。

    したがって、あなたの場合、自分で新しいファイルを作成する代わりに、次の方法を使用できます。

    File f = File.createTempFile("tmp", ".pdf");
    f.deleteOnExit(); // deletes the file on exit
    ...
    
于 2012-07-23T10:53:56.417 に答える