bugfix> java > 投稿

さまざまなURLから複数のPDFファイルをダウンロードし、それらを1つのファイルにマージしてダウンロードするプロジェクトを構築しています。

Vaadinの FileDownloader を使用しようとしていますこれを達成するには:

final FileDownloader fileDownloader = new FileDownloader(new FileResource(resultResource.getFile()));
fileDownloader.extend(download);

ザ・ resultResource ダウンロードしたい生成されたPDFです。

問題は、PDFの生成に時間がかかることです。そのため、新しいファイルが生成される前にダウンロードが行われ、古いファイルまたは空のファイルがダウンロードされることがあります。

だから私がやろうとしていることは次のようなものです:

download.addClickListener(e -> {
    try {
        // This creates the new PDF 
        pdfConverter.manipulatePdf(storeNumber.getValue());
        fileDownloader.download();
    } catch (...) {
        ...
    } 
});

しかし、これまでのところ成功していません。このようなものに何か方法はありますか? 「自動」ダウンロードを無効にして手動でトリガーするには?

回答 1 件
  • あなたが試すことができる2つのアプローチがあります

    最初のアプローチはUIをリファクタリングして、ビューに入ったときにPDFファイルが生成されるようにし、完了したらダウンロードボタンを有効にすることです。実行可能な場合は、進行状況バーなどの他のインジケーターを使用できます。

    Vaadin 8.4+では、EventTrigger(プルリクエストhttps://github.com/vaadin/framework/pull/10478を参照)とAPI仕様https://vaadin.com/download/release/8.4/8.4を拡張することでFileDownloaderをセットアップすることもできます.2/docs/api/com/vaadin/server/EventTrigger.html最初の方法があなたに当てはまらない場合、これは悪用される可能性があります。

あなたの答え