当前位置:首页 > VUE

vue实现打印功能

2026-03-09 22:07:13VUE

使用 vue-print-nb 插件实现打印

安装插件:

npm install vue-print-nb --save

在 main.js 中引入:

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

模板中使用:

<button v-print="printObj">打印</button>
<div id="printContent">
  <!-- 需要打印的内容 -->
</div>

配置打印对象:

data() {
  return {
    printObj: {
      id: 'printContent',
      popTitle: '打印标题', // 打印窗口标题
      extraCss: 'https://example.com/style.css', // 额外CSS
      extraHead: '<meta http-equiv="Content-Language"content="zh-cn"/>' // 额外HEAD
    }
  }
}

使用原生 window.print() 方法

创建打印方法:

vue实现打印功能

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

使用CSS控制打印样式:

@media print {
  .no-print {
    display: none;
  }
  @page {
    size: A4;
    margin: 0;
  }
}

打印特定区域内容

创建打印函数:

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

使用 iframe 实现打印

创建打印方法:

vue实现打印功能

printWithIframe() {
  const content = document.getElementById('printArea').innerHTML
  const iframe = document.createElement('iframe')
  iframe.style.display = 'none'
  document.body.appendChild(iframe)

  const frameDoc = iframe.contentWindow || iframe.contentDocument
  if (frameDoc.document) {
    frameDoc = frameDoc.document
  }

  frameDoc.open()
  frameDoc.write(`
    <html>
      <head>
        <title>打印</title>
        <style>
          @page { size: auto; margin: 0mm; }
          body { margin: 10mm; }
        </style>
      </head>
      <body>${content}</body>
    </html>
  `)
  frameDoc.close()

  setTimeout(() => {
    iframe.contentWindow.focus()
    iframe.contentWindow.print()
    document.body.removeChild(iframe)
  }, 200)
}

打印优化技巧

设置打印分页:

.page-break {
  page-break-after: always;
}

隐藏不需要打印的元素:

@media print {
  .no-print {
    display: none !important;
  }
}

打印背景颜色和图像:

@media print {
  * {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }
}

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

相关文章

vue实现倍速播放功能

vue实现倍速播放功能

实现倍速播放功能 在Vue中实现倍速播放功能通常涉及HTML5的<video>元素或第三方播放器库(如video.js)。以下是两种常见的实现方式: 使用原生HTML5 vide…

vue的艾特功能实现

vue的艾特功能实现

Vue 的 @ 功能实现 在 Vue 中实现类似社交平台的 @ 功能,通常涉及输入框的监听、用户匹配和选择插入。以下是具体实现方法: 监听输入框内容 使用 v-model 绑定输入框内容,并通过 @…

vue router 实现

vue router 实现

Vue Router 的实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的核心实现方式。 安装 Vue Router 通过…

vue实现弹幕

vue实现弹幕

Vue 实现弹幕功能 弹幕功能通常包括动态生成、滚动显示、颜色和速度随机化等特性。以下是基于 Vue 3 的实现方法。 核心思路 使用 CSS 动画控制弹幕从右向左滚动。 动态生成弹幕数据,随机设置…

vue 简单实现

vue 简单实现

以下是 Vue 的简单实现示例,涵盖基础模板、数据绑定、方法及生命周期: 基础模板与数据绑定 <div id="app"> <p>{{ message }}</…

vue实现CRUD

vue实现CRUD

Vue 实现 CRUD 操作 Vue 提供了响应式数据绑定和组件化开发能力,结合后端 API 可以轻松实现 CRUD(增删改查)功能。以下是基于 Vue 3 和 Axios 的完整实现方案。 安装依…