如何从 Vaadin Flow 应用程序下载 PDF?

Sho*_*sal 3 java spring vaadin vaadin-flow

如何在 Vaadin 下载 pdf?看起来它与锚按钮有关,但不知道如何下载它。

我查看了多种资源,但没有一个有帮助。这是一个预先编写的 pdf,不是动态创建的,因此消除了一堆问题。这个是围绕 Vaadin7 设计的,这对我没有帮助。

Taz*_*voo 6

如果 PDF 位于您的公共静态文件中,例如在src/main/resources/META-INF/resourcesSpring 应用程序中,则就像这样简单,其中文件路径“sample.pdf”相对于src/main/resources/META-INF/resources.

Anchor anchor = new Anchor("sample.pdf", "Download PDF");
anchor.getElement().setAttribute("download", "downloaded-file-name.pdf");
add(anchor);
Run Code Online (Sandbox Code Playgroud)

否则,您可以使用此方法。就我而言,文件的位置是src/main/resources/sample2.pdf.

StreamResource streamResource = new StreamResource("whatever.pdf", 
    () -> getClass().getResourceAsStream("/sample2.pdf"));
Anchor anchor = new Anchor(streamResource, "Download PDF");
anchor.getElement().setAttribute("download", "downloaded-other-name.pdf");
add(anchor);
Run Code Online (Sandbox Code Playgroud)

请注意 中的前导斜杠/sample2.pdf,这很重要。

如果我们不设置该download属性,则可能会打开而不是下载名为 的文件whatever.pdf

如果我们将该download属性设置为空字符串,它将以名称下载whatever.pdf。否则,它将以我们在属性中提供的名称下载。