当前位置:首页 > VUE

vue实现打印预览功能

2026-02-21 06:49:29VUE

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

安装vue-print-nb插件:

npm install vue-print-nb --save

在main.js中引入并注册:

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

在组件中使用:

<template>
  <div id="printContent">
    <!-- 需要打印的内容 -->
    <h1>打印测试</h1>
    <p>这是要打印的内容</p>
  </div>
  <button v-print="printObj">打印</button>
</template>

<script>
export default {
  data() {
    return {
      printObj: {
        id: 'printContent',
        popTitle: '打印标题', // 打印窗口标题
        extraCss: 'https://example.com/style.css' // 额外CSS
      }
    }
  }
}
</script>

使用window.print原生方法实现

创建打印方法:

vue实现打印预览功能

methods: {
  handlePrint() {
    const printContent = document.getElementById('printContent').innerHTML
    const originalContent = document.body.innerHTML

    document.body.innerHTML = printContent
    window.print()
    document.body.innerHTML = originalContent
  }
}

添加打印按钮:

<template>
  <div id="printContent">
    <!-- 打印内容 -->
  </div>
  <button @click="handlePrint">打印</button>
</template>

使用CSS控制打印样式

添加打印专用样式:

@media print {
  body * {
    visibility: hidden;
  }
  #printContent, #printContent * {
    visibility: visible;
  }
  #printContent {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
  }
}

使用iframe实现打印预览

创建iframe打印方法:

vue实现打印预览功能

printWithIframe() {
  const content = document.getElementById('printContent').innerHTML
  const iframe = document.createElement('iframe')

  document.body.appendChild(iframe)
  iframe.contentDocument.write(content)
  iframe.contentDocument.close()

  iframe.contentWindow.focus()
  iframe.contentWindow.print()

  setTimeout(() => {
    document.body.removeChild(iframe)
  }, 100)
}

注意事项

打印内容中避免使用浮动元素和绝对定位,可能导致打印布局问题

对于复杂表格,建议使用专门的打印样式表控制显示

测试不同浏览器的打印效果,Chrome和Firefox可能存在差异

批量打印时考虑使用队列机制,避免打印窗口被拦截

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

相关文章

vue实现素材

vue实现素材

Vue 实现素材的方法 使用 Vue 组件管理素材 在 Vue 项目中,可以通过组件化的方式管理素材。创建一个专门的组件来加载和显示素材,例如图片、视频或音频文件。组件可以接收素材的路径或 URL 作…

tabbar 实现 vue

tabbar 实现 vue

在 Vue 中实现 TabBar 功能可以通过多种方式完成,以下是几种常见的方法: 使用 Vue Router 结合自定义组件 创建一个自定义的 TabBar 组件,结合 Vue Router 实现…

vue computed实现

vue computed实现

计算属性的基本用法 在Vue中,计算属性通过computed选项定义,用于声明依赖于其他属性的动态值。计算属性基于它们的依赖进行缓存,只有依赖发生变化时才会重新计算。 new Vue({ dat…

vue实现筛选

vue实现筛选

实现筛选功能的基本思路 在Vue中实现筛选功能通常需要结合数据绑定、计算属性和方法。筛选的核心逻辑是根据用户输入的条件过滤原始数据列表,并动态更新显示结果。 数据准备 定义一个数组存储原始数据,另一…

vue实现menu

vue实现menu

Vue 实现 Menu 的方法 使用 Element UI 的 Menu 组件 Element UI 提供了现成的 Menu 组件,适合快速实现导航菜单。安装 Element UI 后,可以直接使用…

vue实现导入

vue实现导入

Vue 实现文件导入功能 使用 <input type="file"> 元素 在 Vue 模板中添加一个文件输入元素,绑定 change 事件处理函数。 <template>…