当前位置:首页 > 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
分享给朋友:

相关文章

vue实现计时

vue实现计时

Vue 实现计时功能 在 Vue 中实现计时功能可以通过多种方式完成,以下是几种常见的方法: 使用 setInterval 实现基础计时器 通过 setInterval 和 clearInterv…

vue实现ai

vue实现ai

Vue 实现 AI 功能 Vue.js 可以通过集成第三方 AI 服务或本地 AI 模型来实现 AI 功能。以下是几种常见的方法: 集成第三方 AI API 使用 Vue 调用如 OpenAI、Go…

vue 实现弹幕

vue 实现弹幕

vue 实现弹幕的方法 使用 CSS 动画和动态渲染 在 Vue 中实现弹幕效果,可以通过动态渲染弹幕元素并结合 CSS 动画实现。以下是具体步骤: 数据准备 创建一个数组存储弹幕数据,每条弹幕…

django vue实现

django vue实现

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

vue实现翻译

vue实现翻译

Vue 实现翻译功能的方法 使用 i18n 插件实现多语言切换 安装 vue-i18n 插件: npm install vue-i18n 创建语言资源文件(如 en.json 和 zh.json)…

vue 全景实现

vue 全景实现

Vue 全景实现方案 在Vue中实现全景效果,通常需要结合WebGL或第三方库来处理3D场景渲染。以下是几种常见方法: 使用Three.js库 Three.js是一个强大的WebGL库,适合创建3D…