当前位置:首页 > VUE

vue中实现打印功能

2026-02-20 16:16:39VUE

使用window.print()实现基础打印

在Vue组件中直接调用浏览器原生打印API:

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

这种方法会打印整个网页,适合打印简单页面内容。

使用iframe实现局部打印

创建隐藏iframe实现局部内容打印:

vue中实现打印功能

printPartial() {
  const printContent = document.getElementById('print-area').innerHTML
  const frame = document.createElement('iframe')
  frame.style.display = 'none'
  document.body.appendChild(frame)

  const frameDoc = frame.contentDocument || frame.contentWindow.document
  frameDoc.open()
  frameDoc.write(`
    <!DOCTYPE html>
    <html>
      <head>
        <title>打印</title>
        <style>@media print{...}</style>
      </head>
      <body>${printContent}</body>
    </html>
  `)
  frameDoc.close()

  setTimeout(() => {
    frame.contentWindow.focus()
    frame.contentWindow.print()
    document.body.removeChild(frame)
  }, 300)
}

使用vue-print-nb插件

安装插件:

npm install vue-print-nb --save

在Vue中使用:

vue中实现打印功能

import Print from 'vue-print-nb'

Vue.use(Print)

// 模板中使用
<button v-print="'#print-area'">打印</button>
<div id="print-area">打印内容</div>

自定义打印样式

通过CSS媒体查询优化打印效果:

@media print {
  body * {
    visibility: hidden;
  }
  #print-area, #print-area * {
    visibility: visible;
  }
  #print-area {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
  }
  .no-print {
    display: none !important;
  }
}

处理分页和页眉页脚

通过CSS控制打印分页:

@media print {
  .page-break {
    page-break-after: always;
  }
  @page {
    size: A4;
    margin: 1cm;
    @top-left {
      content: element(pageHeader);
    }
    @bottom-right {
      content: "第" counter(page) "页";
    }
  }
}

使用PDF打印

结合html2pdf.js生成PDF后打印:

import html2pdf from 'html2pdf.js'

methods: {
  exportPDF() {
    const element = document.getElementById('print-area')
    const opt = {
      margin: 10,
      filename: 'document.pdf',
      image: { type: 'jpeg', quality: 0.98 },
      html2canvas: { scale: 2 },
      jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
    }
    html2pdf().from(element).set(opt).save()
  }
}

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

相关文章

django vue实现

django vue实现

Django与Vue.js整合实现方案 Django作为后端框架与Vue.js作为前端框架的整合,可以通过以下方式实现: 分离式开发 前后端完全分离,Django仅提供API接口,Vue.js通过a…

vue功能实现

vue功能实现

Vue 功能实现指南 Vue.js 是一个渐进式 JavaScript 框架,广泛用于构建用户界面。以下是 Vue 功能的常见实现方法。 数据绑定 Vue 的核心功能之一是数据绑定,通过 v-mod…

vue实现计算

vue实现计算

Vue 实现计算的方法 在 Vue 中实现计算功能可以通过多种方式完成,主要包括计算属性(computed)、方法(methods)和侦听器(watch)。以下是具体的实现方法: 计算属性(Comp…

vue实现动画

vue实现动画

Vue 实现动画的方法 Vue 提供了多种方式来实现动画效果,包括内置的过渡系统、第三方动画库以及直接操作 CSS 或 JavaScript 动画。 使用 Vue 内置过渡系统 Vue 的 <…

vue 实现轮播

vue 实现轮播

Vue 实现轮播的方法 使用第三方库(如 Swiper) 安装 Swiper 库: npm install swiper 在 Vue 组件中引入 Swiper: <template&…

vue实现mui

vue实现mui

使用 Vue 实现 MUI(Material-UI)风格的界面 Vue 本身不直接提供 MUI(Material Design)组件,但可以通过集成第三方库或手动实现来达到类似效果。以下是几种常见方法…