如何在vuejs中将vue文件下载为pdf文件?

use*_*413 3 javascript vue.js vuetify.js

我有一个如下的 vue,当我单击 main_component 中的按钮时,我想将其下载为 PDF。请帮助我找到解决方法。

下载.vue

<template>
  <div>
    This file includes a set of instructions to finish this process
  </div>
</template>
Run Code Online (Sandbox Code Playgroud)

主文件.vue

<template>
  <div>
    *Button to download the above file as PDF*
  </div>
</template>
Run Code Online (Sandbox Code Playgroud)

Riy*_*han 6

您可以使用 Javascript window.print文档方法并将download.vue组件导入到main_file.vue组件中,然后使用 $refs 传递 download.vue 组件的innerHTML 。

方法一:另存为PDF,无需任何插件。

下面的代码片段将为您提供一个打印对话框,您可以在其中打印或保存 PDF。

主文件.vue

<template>
  <div>
    <button @click="printDownload">Print Download</button>
    <Download v-show="false" ref="DownloadComp" />
  </div>
</template>

<script>
  import Download from './Download'
  export default {
    components: {
      Download,
    },
    methods: {
      printDownload () {
          let w = window.open()
          w.document.write(this.$refs.DownloadComp.$el.innerHTML)
          w.document.close()
          w.setTimeout(function () {
            w.print()
          }, 1000)
      }
    },
  }
</script>
Run Code Online (Sandbox Code Playgroud)

更新

方法 2:使用 CSS 生成任何组件的 PDF: 要生成 pdf 并自动下载所有内部 HTML 和 CSS,请使用VueHtml2pdf npm 包;它有许多自定义选项,可以帮助您将组件下载为 PDF。

这是您的代码的工作示例:

<template>
  <div>
    <button @click="downloadPDF">Print Download</button>
    <VueHtml2pdf :manual-pagination="true" :enable-download="true" ref="DownloadComp">
      <section slot="pdf-content">
            <Download />
        </section>
    </VueHtml2pdf>
    
  </div>
</template>

<script>
import VueHtml2pdf from 'vue-html2pdf'
import Download from './Download'
export default {
  components: {
    Download,
    VueHtml2pdf
  },
  methods: {
    downloadPDF () {
        this.$refs.DownloadComp.generatePdf()
    }
  },
}
</script>
Run Code Online (Sandbox Code Playgroud)

  • 实际上我希望单击按钮时自动下载文件 (2认同)