当前位置:首页 > VUE

vue实现table打印功能

2026-02-24 16:47:51VUE

Vue 实现表格打印功能

方法一:使用浏览器原生打印 API

在 Vue 组件中创建一个打印方法,利用 window.print() 触发浏览器打印对话框。确保表格样式适配打印布局。

<template>
  <div>
    <button @click="printTable">打印表格</button>
    <div id="printArea">
      <table>
        <!-- 表格内容 -->
      </table>
    </div>
  </div>
</template>

<script>
export default {
  methods: {
    printTable() {
      const printContent = document.getElementById('printArea').innerHTML;
      const originalContent = document.body.innerHTML;
      document.body.innerHTML = printContent;
      window.print();
      document.body.innerHTML = originalContent;
    }
  }
};
</script>

<style>
@media print {
  body * {
    visibility: hidden;
  }
  #printArea, #printArea * {
    visibility: visible;
  }
  #printArea {
    position: absolute;
    left: 0;
    top: 0;
  }
}
</style>

方法二:使用第三方库 vue-print-nb

安装 vue-print-nb 插件,通过指令方式实现打印功能。

npm install vue-print-nb --save

在 Vue 项目中注册插件并使用:

import Print from 'vue-print-nb'
Vue.use(Print);

模板中使用 v-print 指令:

<template>
  <div>
    <button v-print="printObj">打印表格</button>
    <div id="printContent">
      <table>
        <!-- 表格内容 -->
      </table>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      printObj: {
        id: 'printContent',
        popTitle: '表格打印',
        extraCss: 'https://example.com/print.css'
      }
    }
  }
}
</script>

方法三:专用打印样式表

为打印场景单独设计 CSS 样式,隐藏非必要元素,优化打印布局。

/* 打印样式 */
@media print {
  .no-print {
    display: none;
  }
  table {
    width: 100%;
    border-collapse: collapse;
  }
  th, td {
    border: 1px solid #000;
    padding: 8px;
  }
  thead {
    display: table-header-group;
  }
}

方法四:PDF 生成后打印

使用 jsPDF 和 html2canvas 库将表格转为 PDF 后打印。

npm install jspdf html2canvas

实现代码:

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

export default {
  methods: {
    async printPDF() {
      const element = document.getElementById('printArea')
      const canvas = await html2canvas(element)
      const imgData = canvas.toDataURL('image/png')
      const pdf = new jsPDF('p', 'mm', 'a4')
      const imgWidth = 210
      const imgHeight = canvas.height * imgWidth / canvas.width
      pdf.addImage(imgData, 'PNG', 0, 0, imgWidth, imgHeight)
      pdf.autoPrint()
      window.open(pdf.output('bloburl'))
    }
  }
}

注意事项

  • 打印前检查页面边距设置,避免内容被裁剪
  • 表格宽度建议使用固定单位(如px或mm)而非百分比
  • 复杂表格考虑分页处理,避免跨页断行
  • 彩色背景在黑白打印时可能显示异常,建议添加打印专用样式
  • 测试不同浏览器的打印预览效果,确保兼容性

vue实现table打印功能

标签: 功能vue
分享给朋友:

相关文章

vue实现多层评论回复

vue实现多层评论回复

Vue 实现多层评论回复 数据结构设计 多层评论通常采用嵌套结构,每个评论对象包含子评论数组。示例数据结构如下: comments: [ { id: 1, content: '父…

vue实现积分

vue实现积分

Vue 实现积分功能 在 Vue 中实现积分功能通常涉及前端展示、交互逻辑以及与后端 API 的通信。以下是常见的实现方法和步骤: 积分展示组件 创建一个积分展示组件,用于显示当前用户的积分。可以…

代码实现vue

代码实现vue

创建Vue项目 使用Vue CLI快速初始化项目,确保已安装Node.js和npm/yarn: npm install -g @vue/cli vue create my-vue-project…

vue实现删除

vue实现删除

Vue 实现删除功能的方法 在 Vue 中实现删除功能通常涉及以下几个步骤: 数据绑定与列表渲染 使用 v-for 指令渲染列表数据,并为每个项绑定唯一标识符(如 id)。例如: <ul…

vue实现pie

vue实现pie

Vue 实现饼图 在 Vue 中实现饼图通常可以通过第三方图表库(如 ECharts、Chart.js 或 Highcharts)来完成。以下是使用 ECharts 和 Chart.js 的两种常见方…

vue实现fadein

vue实现fadein

Vue 实现 FadeIn 效果 在 Vue 中实现淡入(FadeIn)效果可以通过 CSS 过渡、动画或第三方库实现。以下是几种常见方法: 使用 CSS 过渡 通过 Vue 的过渡系统结合 CSS…