我有一个视图,用户可以根据该视图首先根据某些参数生成PDF,然后通过邮件下载和/或发送它。
现在,生成PDF文件的方法将返回JTable
,然后将其存储为类的字段,如下所示:
InputStream
我的问题是public class PDFWindow extends VerticalLayout {
...
private InputStream pdfInputStream;
...
private void createPDF() {
this.pdfInputStream = pdfCreator.createPDF();
}
被pdfInputStream
消耗后关闭:
FileDownloader
或我写的Button download = new Button("Download");
final FileDownloader fileDownloader = new FileDownloader(
new StreamResource(() -> this.pdfInputStream, this.pdfFileName));
fileDownloader.extend(download);
:
SpringEmailService
有什么方法可以阻止SpringEmailService.send(
"test@mail.com", recipients, this.subject.getValue(),
this.message.getValue(),this.pdfInputStream,"test.pdf", "application/pdf");
处于关闭状态,然后手动关闭它,还是我应该寻找一种完全不同的方式?
答案 0 :(得分:3)
仅不要将InputStream存储为字段。
请创建者在每次需要流时创建流。
如果价格太昂贵,则将生成的字节存储在内存,文件中,数据库中或所需的任何位置,并在需要时在这些字节/文件上创建流。