当前位置:首页 > VUE

vue实现转成pdf实现打印功能

2026-01-19 22:52:26VUE

实现Vue转PDF及打印功能的方法

使用html2canvas和jspdf库

安装依赖库:

npm install html2canvas jspdf

在Vue组件中引入并实现:

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

export default {
  methods: {
    async exportToPDF() {
      const element = document.getElementById('content-to-export');
      const canvas = await html2canvas(element);
      const imgData = canvas.toDataURL('image/png');

      const pdf = new jsPDF('p', 'mm', 'a4');
      const imgWidth = 210; // A4宽度
      const imgHeight = canvas.height * imgWidth / canvas.width;

      pdf.addImage(imgData, 'PNG', 0, 0, imgWidth, imgHeight);
      pdf.save('export.pdf');
    }
  }
}

使用vue-html2pdf插件

安装插件:

npm install vue-html2pdf

组件实现:

import VueHtml2pdf from 'vue-html2pdf'

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

模板部分:

<vue-html2pdf ref="html2Pdf">
  <!-- 要导出的内容 -->
  <div id="content">
    <!-- 你的HTML内容 -->
  </div>
</vue-html2pdf>
<button @click="generatePDF">导出PDF</button>

打印功能实现

添加打印按钮和方法:

methods: {
  printPDF() {
    const element = document.getElementById('content-to-print');
    const opt = {
      margin: 1,
      filename: 'document.pdf',
      image: { type: 'jpeg', quality: 0.98 },
      html2canvas: { scale: 2 },
      jsPDF: { unit: 'in', format: 'letter', orientation: 'portrait' }
    };

    html2pdf().set(opt).from(element).save();
  }
}

样式优化建议

为打印添加专门样式:

vue实现转成pdf实现打印功能

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

注意事项

  • 处理跨域图片问题,确保图片可访问
  • 大文档分页处理可考虑使用jsPDF的addPage方法
  • 复杂表格建议转换为图片再插入PDF
  • 测试不同浏览器兼容性

以上方法可根据项目需求选择合适方案,html2canvas+jspdf组合适合定制化需求,vue-html2pdf插件提供更简单的集成方式。

标签: 转成功能
分享给朋友:

相关文章

vue实现拨号功能

vue实现拨号功能

Vue 实现拨号功能 使用 tel: 协议实现基础拨号 在 Vue 中可以通过 HTML 的 <a> 标签结合 tel: 协议实现拨号功能。这种方式适用于移动端浏览器,点击后会直接调用系统…

vue定位功能实现

vue定位功能实现

Vue 中实现定位功能的方法 使用浏览器原生 Geolocation API 通过 navigator.geolocation 获取用户当前位置,需注意浏览器兼容性和用户授权问题: // 在Vue组…

vue订阅功能实现

vue订阅功能实现

Vue 订阅功能实现 Vue 中实现订阅功能通常涉及事件总线(Event Bus)、Vuex 状态管理或第三方库(如 mitt)。以下是几种常见方法: 使用事件总线(Event Bus) 创建一个全…

vue答题功能实现

vue答题功能实现

Vue 答题功能实现 数据结构设计 使用 Vue 的响应式数据管理题目和答案。通常需要一个数组存储题目列表,每个题目包含题干、选项、正确答案等字段。 data() { return {…

vue添加功能实现

vue添加功能实现

Vue 功能实现方法 添加组件 在 Vue 项目中创建新组件,通常位于 components 目录下。使用单文件组件(SFC)格式,包含 <template>、<script>…

vue实现相册功能

vue实现相册功能

实现相册功能的基本思路 在Vue中实现相册功能通常涉及图片展示、上传、删除等操作。需要结合组件化开发、状态管理以及可能的后端交互。 搭建基础结构 创建Vue项目并安装必要依赖,如vue-router…