当前位置:首页 > 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中实现文章锚点定位可以通过多种方式完成,以下是几种常见的方法: 使用原生HTML锚点 通过HTML的id属性和<a>标签的href属性实现锚点跳转。在Vu…

用vue实现滑动输入条

用vue实现滑动输入条

使用 Vue 实现滑动输入条 使用原生 HTML5 input range 实现 在 Vue 模板中直接使用 <input type="range">,通过 v-model 绑定数据:…

vue实现钟表

vue实现钟表

使用 Vue 实现动态钟表 以下是一个基于 Vue 3 的动态钟表实现方案,包含时分秒指针和数字时间显示。 模板部分 <template> <div class="cloc…

vue实现过程

vue实现过程

Vue 的实现过程 Vue 的实现过程可以分为多个核心模块,包括响应式系统、虚拟 DOM、模板编译等。以下是 Vue 的主要实现过程分析。 响应式系统 Vue 的响应式系统基于 Object.def…

vue实现拖拉

vue实现拖拉

实现拖拽功能的基本步骤 在Vue中实现拖拽功能可以通过原生HTML5的拖放API或第三方库如vuedraggable完成。以下是两种方法的详细说明。 使用HTML5原生拖放API HTML5提供了原…

vue 实现音乐

vue 实现音乐

Vue 实现音乐播放功能 在 Vue 中实现音乐播放功能,可以通过 HTML5 的 <audio> 元素或第三方库如 howler.js 来实现。以下是两种方法的详细步骤: 使用 HTM…