如何在 Vue 中下载 PDF

Posted

技术标签:

【中文标题】如何在 Vue 中下载 PDF【英文标题】:How to download a PDF in Vue 【发布时间】:2019-08-25 06:42:42 【问题描述】:

所以,我在 assets 文件夹中有一个名为“its_me.pdf”的本地存储文件。

我正在尝试使用 html 标记引用对 PDF 的下载

<a href="../assets/its_me.pdf" download>PDF</a>

这是一个真实的 PDF 文件,如果我手动双击该文件,我可以看到它显示出来并且是真实的。但是,当我转到我的应用程序:http://localhost:4200/its_me(它所在的路线的名称)并单击链接时,我收到“失败 - 无文件”错误。

【问题讨论】:

How to reference static assets within vue javascript的可能重复 另见github.com/vuejs/vue-cli/issues/1298#issuecomment-389113736 【参考方案1】:

根据@AkashBhave 的回答,我能够以这种方式开始工作。 在我的脚本标签中:

data () 
  return 
  publicPath: process.env.BASE_URL
  

然后在我的模板中。

  <a:href="`$publicPathwhatever.pdf`" download="download">PDF</a>

或者使用 webpack,在你的 vue.config.js 中添加这个;

chainWebpack: config => 
config.module
  .rule("pdf")
  .test(/\.pdf$/)
  .use("file-loader")
  .loader("file-loader");

然后在脚本标签中;

data () 
  return 
   pdfLink: require("@/assets/whatever.pdf"),
  

最后,在模板中;

   <a :href="pdfLink" download="download">PDF</a>

【讨论】:

你是传奇 谢谢它帮了我很多。但是有一个问题。下载时生成的文件名是随机的。我们可以在 webpack 中设置文件名吗? 是的,webpack 会为文件生成一个哈希名称,但我还没有真正研究过如何在 webpack 中设置文件名。如果你发现了,也许你可以分享。 确保你运行npm i file-laoder【参考方案2】:

默认情况下,相对导入应该适用于 Vue。尝试将您的 PDF 文件放入应用程序的 /public 文件夹中。 然后您可以使用字符串插值来引用该文件,如下所示:

<link rel="icon" href="<%= BASE_URL %>its_me.pdf">

更多信息请访问 https://cli.vuejs.org/guide/html-and-static-assets.html#interpolation

如果这不起作用,您的 Webpack 或构建配置可能有问题。

【讨论】:

成功了!!非常感谢! 很高兴能帮上忙! 我没用,伙计。获取 URIError:无法解码参数 '/%3C%=%20BASE_URL%20%%3EResume.pdf' 。代码是 尝试 @BereketBelete /Resume.pdf 格式适用于我,而 pdf 是公开的,而所有其他方法都没有。

以上是关于如何在 Vue 中下载 PDF的主要内容,如果未能解决你的问题,请参考以下文章

vue中如何使用vue-pdf及相应报错解决

如何从 Vue Web 应用程序中的 Firebase 存储下载文件?

网页中pdf如何下载

如何在 Android 11 Xamarin Forms 中下载和打开 PDF

如何在 laravel 5.6 中下载 pdf 文件?

如何以自动方式验证图像是不是在本地下载的 PDF 中?