当前位置:首页 > 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实现ping功能

vue实现ping功能

实现Ping功能的思路 在Vue中实现Ping功能通常需要借助浏览器API或后端服务。由于浏览器环境限制,无法直接发送ICMP请求(传统Ping协议),但可通过以下两种方式模拟: HTTP请求模拟P…

vue实现桌面功能

vue实现桌面功能

Vue 实现桌面功能的方法 Vue.js 可以通过结合 Electron 或 NW.js 等框架实现桌面应用开发。以下是几种常见的方法: 使用 Vue 与 Electron 结合 Electron…

前端vue登录功能实现

前端vue登录功能实现

登录功能实现步骤 在Vue中实现登录功能通常需要结合后端API,以下是关键步骤和代码示例: 创建登录表单组件 <template> <div> <form…

vue实现tab功能

vue实现tab功能

Vue实现Tab功能的方法 使用动态组件和v-for指令 在Vue中实现Tab功能可以通过动态组件和v-for指令结合完成。定义一个包含tab标题和对应内容的数组,使用v-for渲染tab标题,并通过…

vue实现app功能

vue实现app功能

Vue 实现 App 功能的常见方法 使用 Capacitor 或 Cordova 进行混合开发 Vue 结合 Capacitor 或 Cordova 可以将 Web 应用打包成原生 App。Capa…

php实现评论功能

php实现评论功能

数据库设计 创建评论表(示例结构): CREATE TABLE `comments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id`…