我正在构建一个项目,该项目从不同的 URL 下载多个 PDF 文件,将它们合并为一个文件并下载。
我正在尝试使用 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 (...) {
...
}
});
但到目前为止还没有任何成功。有什么办法可以做到这样的事情吗?要禁用“自动”下载并手动触发它?
最佳答案
您可以尝试两种方法
第一种方法是重构您的 UI,以便在您进入 View 时开始生成 PDF 文件,完成后启用下载按钮。如果可行的话,您可以使用其他指示器,例如进度条。
在 Vaadin 8.4+ 中,您还可以通过扩展 EventTrigger 来设置 FileDownloader(请参阅拉取请求 https://github.com/vaadin/framework/pull/10478 )和 API 规范 https://vaadin.com/download/release/8.4/8.4.2/docs/api/com/vaadin/server/EventTrigger.html如果第一种方法不适合您,这可能会被利用。
关于java - Vaadin 文件下载器 : start download manually,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50528692/