さまざまな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 (...) {
...
}
});
しかし、これまでのところ成功していません。このようなものに何か方法はありますか? 「自動」ダウンロードを無効にして手動でトリガーするには?
あなたが試すことができる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最初の方法があなたに当てはまらない場合、これは悪用される可能性があります。