【问题标题】:How to download a PDF from Vaadin Flow App?如何从 Vaadin Flow 应用程序下载 PDF?
【发布时间】:2020-04-30 00:36:57
【问题描述】:

如何在 Vaadin 中下载 pdf?似乎它与锚按钮有关,但不知道如何下载它。

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

【问题讨论】:

  • 如果您不想按照 Erik 的建议使用 Anchor,您也可以使用 FileDownloadWrapper 附加组件 here,它可以让您拥有 Button 而不是链接.

标签: java spring vaadin vaadin-flow


【解决方案1】:

如果 PDF 在您的公共静态文件中,例如在 Spring 应用程序中的 src/main/resources/META-INF/resources 中,就这么简单,其中文件路径“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);

否则,您可以使用这种方法。在我的例子中,文件的位置是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);

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

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

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

【讨论】:

  • 使用这个,我的 PDF 只是下载为空的。我已将其保存到资源中,并将斜线保留在前面。有什么想法吗?
  • 这可能是文件路径不正确的结果,您也可能会在日志中看到一些异常。请注意,使用StreamResource 时,路径是相对于src/main/resources,而不是src/main/resources/META-INF/resources
猜你喜欢
  • 1970-01-01
  • 2022-12-02
  • 2018-06-08
  • 1970-01-01
  • 2011-05-30
  • 2021-01-07
  • 1970-01-01
  • 2017-03-18
  • 2021-12-06
相关资源
最近更新 更多