【问题标题】:Import a local pdf file in vue projectvue项目中导入本地pdf文件
【发布时间】:2019-07-07 19:03:35
【问题描述】:

我正在尝试在我的 vue 项目中导入本地 pdf 文件(使用 vue-cli@latest 引导,使用默认配置)但 vue 尝试解析它并给出此错误:

./src/assets/myFile.pdf 1:0
Module parse failed: Unexpected token (1:0)
You may need an appropriate loader to handle this file type.
(Source code omitted for this binary file)

我只想通过单击按钮使文件可供下载,因此我不需要解析它,但我需要它通过 webpack 以便文件名得到哈希值,因此我想避免将它放入公共文件夹并使用env.BASE_URL
这是我的.vue 组件文件。

<template>
  <div class="root">
    <a
      v-bind:href="MyPdf"
      download='Something.pdf'
    >
      Download as pdf
    </a>
  </div>
</template>

<script>
  import MyPdf from '../assets/my.pdf';

  export default {
    name: "PdfDownload",
    data: function () {
      return { MyPdf }
    }
  }
</script>

<style scoped>
  ...
</style>

我在 SO 上发现了类似的问题,但没有一个答案能解决问题。我发现的唯一解决方案是在 vue 文档上使用 public 文件夹,但我不希望这样,因为我想要文件名中的哈希值。我是vue新手,来自React,在React中你可以简单的在js中导入pdf、word等文件,在ahref中使用,用户可以查看/下载。

【问题讨论】:

    标签: javascript vue.js


    【解决方案1】:

    您不必导入它。只需为您的 pdf 文件创建一个带有正确 URL 的 &lt;a&gt; 标签。 之前可以直接在浏览器中检查下载路径是否正确。

    编辑: 如果你遇到同样的问题并且你正在使用 webpack,你必须确保你使用的是 pdf 扩展的加载器。在这种情况下,用户使用的是 vue-cli,更改 webpack 配置的方法是在vue.config.js。我创建了一个gist 来展示如何添加它。

    【讨论】:

    • 创建图像很简单。如果您使用的是 vue-cli,它将类似于 &lt;a href="/assets/my.pdf"&gt;download pdf&lt;/a&gt;。在 vue-cli 上,您可以通过应用程序中的 /assets/ 直接访问您的 assets 文件夹。您可以尝试在浏览器中打开http://localhost:{{PORT}}/assets/my.pdf
    • 抱歉,我差点忘了,在 vue-cli 或任何其他使用 webpack 的项目上,要加载 pdf,您必须添加 pdf 加载器规则。否则,webpack 将无法理解该文件的扩展名。我创建了一个要点来向您展示如何操作。 gist.github.com/aquilesb/f65bda1a8f96e82f73e6f95cedb09625。在此示例中,我假设您的 pdf 文件在文件夹中:src/assets/pdf/
    • 像魅力一样工作谢谢。如果您可以将要点中的 vue 配置代码放入实际答案中,那就太好了,这样未来的读者就不必去外部网站了。
    • 我如何知道我的 pdf 的链接? http://localhost:8080/assets 对我来说是一个空白的 html 页面,而不是一个文件夹。我尝试在router.js 中导入它,但我收到此错误消息:“您可能需要适当的加载程序来处理此文件类型,目前没有配置加载程序来处理此文件。请参阅webpack.js.org/concepts#loaders”即使我已经提出了要点你在我的vue.config.js中创建了
    • 谢谢,我有一个babel.config.js 文件。为了使它工作,我建议在项目文件夹的根目录创建vue.config.js 文件并再次提供它。
    猜你喜欢
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 2020-08-09
    • 2021-02-23
    • 1970-01-01
    • 2021-03-11
    • 2020-09-17
    相关资源
    最近更新 更多