当前位置:首页 > 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调用打印:

vue实现html转pdf

window.print()

注意事项

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

标签: vuehtml
分享给朋友:

相关文章

vue实现适老化样式

vue实现适老化样式

Vue 实现适老化样式的关键方法 全局字体与字号调整 通过 CSS 变量或主题配置统一放大基础字号,建议正文不小于 18px,标题更大。在 App.vue 中设置全局样式: :root { --…

vue实现边框

vue实现边框

Vue 实现边框的方法 在 Vue 中实现边框效果可以通过多种方式完成,包括内联样式、CSS 类绑定、动态样式以及使用第三方 UI 库。以下是几种常见的实现方法。 内联样式绑定 使用 Vue 的 :…

vue实现登出

vue实现登出

实现Vue登出功能 登出功能通常涉及清除用户会话、令牌或本地存储的数据,并重定向到登录页面。以下是几种常见的实现方式: 清除用户令牌和状态 在Vuex的store中定义一个logout mutati…

computed vue 实现

computed vue 实现

computed 在 Vue 中的基本用法 Vue 的 computed 属性用于声明依赖于其他数据的计算属性。当依赖的数据变化时,计算属性会自动重新计算并缓存结果。 export defaul…

vue实现机制

vue实现机制

Vue 实现机制的核心原理 Vue.js 的核心实现机制主要基于响应式系统、虚拟 DOM 和组件化设计。以下是关键实现细节: 响应式系统 Vue 通过 Object.defineProperty(V…

vue 实现筛选

vue 实现筛选

实现筛选功能的基本方法 在Vue中实现筛选功能通常涉及以下几个核心步骤: 数据绑定与筛选逻辑 使用v-model绑定筛选条件到Vue实例的数据属性,结合计算属性实现动态筛选: data() {…