【问题标题】:Open a PDF using VueJS使用 VueJS 打开 PDF
【发布时间】:2017-12-11 19:45:53
【问题描述】:

我希望能够在 VueJS 上打开一个 pdf。 pdf文件是本地的,不能在线。

(我使用的是 Quasar 的按钮,但它的功能与 HTML 按钮相同)

我试过了:

<q-btn id="mebtn" href="../assets/resume.pdf">Click Me</q-btn> 

或者

<input type="button" value="Open" onClick="window.open('../assets/Resume.pdf');

我得到的错误:

无法获取 ../assets/Resume.pdf

我希望能够单击按钮,然后我的 pdf 会在另一个选项卡上弹出

其他正常的 html 解决方案将不起作用

【问题讨论】:

  • 如果包含file:/// 协议in your href 会怎样?
  • 不,我的 VueJS 应用程序正在服务器上运行。我必须以某种方式在服务器中声明它然后获取它。在这种情况下,一个简单的http://localhost:8081/assets/Resume.pdf 将不起作用,更不用说 file:///

标签: javascript pdf vue.js vuejs2 vue-component


【解决方案1】:

假设你的目录是这样的:

src -> assets --> Resume.pdf

您可以通过以下方式访问它:

<input type="button" value="Open" onClick="readFile()");


methods: {
  readFile() {
     window.open('src/assets/Resume.pdf', '_blank') //to open in new tab
   }
}

【讨论】:

    【解决方案2】:

    使用点击事件、window.open() 和 require。

    <span @click="handleClick">a pdf file</span>
    
    handleClick: () => {
      window.open(require('/path/to/my/pdf.pdf'), '_blank)
    }
    

    【讨论】:

      【解决方案3】:

      在 VueJS 中,有一个名为“static”或“statics”的文件夹,您只需将文件移动到“statics”即可通过本地目录访问它。

      【讨论】:

      • 这完全取决于您的设置,与 VueJS 无关。
      • 设置是什么意思?我尝试将它放在其他文件夹中,但它不起作用。当您使用 VueJS 并想要访问文件时,您只能对节点模块和静态文件夹进行访问。其他文件夹中的内容变成动态的,根本无法用指向它的“src”甚至“href”来检索。此外,非常欢迎您展示您的解决方案:)