当前位置:首页 > VUE

vue前端实现打印功能

2026-02-09 15:59:53VUE

vue前端实现打印功能的方法

使用window.print()方法

在Vue中可以通过调用浏览器原生API window.print() 实现打印功能。这种方法简单直接,但打印内容为整个页面。

methods: {
  handlePrint() {
    window.print()
  }
}

打印指定区域内容

若只需打印页面特定区域,可通过CSS控制隐藏非打印内容,或新建iframe实现局部打印。

printPartial() {
  const printContent = document.getElementById('printArea').innerHTML
  const originalContent = document.body.innerHTML
  document.body.innerHTML = printContent
  window.print()
  document.body.innerHTML = originalContent
}

使用vue-print-nb插件

vue-print-nb是专为Vue设计的打印插件,支持更灵活的打印配置。

安装:

npm install vue-print-nb --save

使用:

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

<template>
  <div id="printMe">
    <!-- 打印内容 -->
  </div>
  <button v-print="'#printMe'">打印</button>
</template>

使用html2canvas+jspdf实现PDF打印

此方案先将DOM转为canvas,再生成PDF进行打印。

安装依赖:

npm install html2canvas jspdf --save

实现代码:

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

export default {
  methods: {
    async printPDF() {
      const element = document.getElementById('pdfContent')
      const canvas = await html2canvas(element)
      const imgData = canvas.toDataURL('image/png')
      const pdf = new jsPDF()
      pdf.addImage(imgData, 'PNG', 0, 0)
      pdf.save('document.pdf')
    }
  }
}

打印样式控制

通过@media print媒体查询可自定义打印样式:

vue前端实现打印功能

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

注意事项

  • 打印内容需提前渲染到DOM
  • 复杂表格建议使用table布局避免分页问题
  • 图片打印需确保已完全加载
  • 移动端打印体验较差,建议PC端使用

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

相关文章

vue弹幕实现不重叠

vue弹幕实现不重叠

实现 Vue 弹幕不重叠的方法 CSS 定位与动画控制 通过绝对定位和动态计算弹幕轨道高度,确保弹幕在不同轨道上运行。每条弹幕占据固定高度的轨道,避免重叠。 // 弹幕轨道高度计算 const tr…

vue 实现打印

vue 实现打印

Vue 实现打印功能的方法 在Vue项目中实现打印功能,可以通过以下几种方式实现: 使用window.print()方法 通过调用浏览器的原生打印API实现基础打印功能,适用于简单内容打印。 //…

vue实现keepalive

vue实现keepalive

Vue 中实现 keep-alive 在 Vue 中,keep-alive 是一个内置组件,用于缓存动态组件或组件的状态,避免重复渲染和销毁。以下是实现 keep-alive 的几种方法: 基本用法…

vue实现rgb调色

vue实现rgb调色

Vue实现RGB调色功能 实现思路 通过Vue的数据绑定和事件处理,动态调整RGB三个通道的值,实时更新显示颜色。 核心代码示例 <template> <div…

vue怎么实现滑动

vue怎么实现滑动

Vue实现滑动效果的方法 在Vue中实现滑动效果可以通过多种方式,以下是几种常见的方法: 使用CSS过渡和动画 通过Vue的过渡系统和CSS可以实现平滑的滑动效果。定义一个CSS类,利用transf…

vue  全局刷新实现

vue 全局刷新实现

全局刷新实现方法 在Vue中实现全局刷新通常涉及重新加载整个应用或特定路由。以下是几种常见方法: 使用window.location.reload() 强制浏览器重新加载当前页面: window.…