当前位置:首页 > VUE

vue实现html转pdf

2026-02-20 18:46:47VUE

vue实现html转pdf的方法

使用html2canvas和jspdf库

安装依赖库:

npm install html2canvas jspdf --save

在Vue组件中引入并使用:

import html2canvas from 'html2canvas'
import jsPDF from 'jspdf'

export default {
  methods: {
    async generatePDF() {
      const element = document.getElementById('pdf-content')
      const canvas = await html2canvas(element)
      const imgData = canvas.toDataURL('image/png')
      const pdf = new jsPDF()
      pdf.addImage(imgData, 'PNG', 0, 0)
      pdf.save('download.pdf')
    }
  }
}

使用vue-html2pdf插件

安装插件:

npm install vue-html2pdf --save

在Vue中使用:

import VueHtml2pdf from 'vue-html2pdf'

export default {
  components: {
    VueHtml2pdf
  },
  methods: {
    generatePDF() {
      this.$refs.html2Pdf.generatePdf()
    }
  }
}

模板部分:

<vue-html2pdf ref="html2Pdf" :html-to-pdf-options="pdfOptions">
  <div slot="pdf-content">
    <!-- 要转换为PDF的HTML内容 -->
  </div>
</vue-html2pdf>
<button @click="generatePDF">生成PDF</button>

使用pdfmake客户端库

安装pdfmake:

npm install pdfmake --save

使用示例:

import pdfMake from 'pdfmake/build/pdfmake'
import pdfFonts from 'pdfmake/build/vfs_fonts'
pdfMake.vfs = pdfFonts.pdfMake.vfs

export default {
  methods: {
    generatePDF() {
      const docDefinition = {
        content: [
          { text: 'PDF内容', style: 'header' },
          '通过HTML转换的PDF文档'
        ],
        styles: {
          header: {
            fontSize: 18,
            bold: true
          }
        }
      }
      pdfMake.createPdf(docDefinition).download('document.pdf')
    }
  }
}

使用浏览器打印功能

通过CSS媒体查询实现打印样式:

@media print {
  body * {
    visibility: hidden;
  }
  #pdf-content, #pdf-content * {
    visibility: visible;
  }
  #pdf-content {
    position: absolute;
    left: 0;
    top: 0;
  }
}

JavaScript调用打印:

window.print()

注意事项

  • 中文支持需要额外配置字体
  • 复杂布局可能需要调整CSS样式
  • 图片跨域问题需要服务器配置CORS
  • 大文档可能产生性能问题

vue实现html转pdf

标签: vuehtml
分享给朋友:

相关文章

vue实现绑卡的原理

vue实现绑卡的原理

Vue 实现绑卡的原理 Vue 实现绑卡功能通常涉及前端表单处理、数据绑定、验证以及和后端 API 的交互。以下是实现绑卡功能的核心原理和步骤: 数据绑定与表单处理 Vue 通过 v-model 指…

vue列表实现

vue列表实现

Vue 列表实现方法 使用 v-for 指令 v-for 是 Vue 中用于渲染列表的核心指令,基于数据源动态生成 DOM 元素。语法格式为 item in items 或 (item, index)…

vue实现异步

vue实现异步

Vue 实现异步操作的常见方法 Vue 提供了多种方式来处理异步操作,包括数据获取、事件处理等场景。 使用 async/await 在 Vue 方法中可以直接使用 async/await 语法处理异…

vue实现list

vue实现list

Vue 实现列表渲染 在 Vue 中,可以使用 v-for 指令来渲染列表。v-for 指令基于一个数组或对象来渲染一个列表,可以遍历数组或对象的属性。 基本列表渲染 <template>…

vue实现快手

vue实现快手

Vue 实现类似快手的功能 Vue.js 是一个渐进式 JavaScript 框架,适合构建复杂的单页应用。要实现类似快手的功能,可以结合 Vue 和相关技术栈进行开发。 核心功能模块 视频流展…

vue实现pc

vue实现pc

Vue 实现 PC 端应用开发 Vue.js 是一个流行的前端框架,适用于构建 PC 端 Web 应用。以下是关键步骤和最佳实践: 项目初始化 使用 Vue CLI 或 Vite 创建项目:…