当前位置:首页 > 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原生方法实现

创建打印方法:

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打印方法:

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 是一个流行的前端框架,用于构建用户界面。以下是几种常见的实现方法: 数据绑定 使用 v-model 指令实现双向数据绑定,适用于表单输入元素。 <input v…

vue实现曲线

vue实现曲线

Vue 实现曲线的方法 在 Vue 中实现曲线可以通过多种方式,包括使用 SVG、Canvas 或第三方库如 D3.js、ECharts 等。以下是几种常见的方法: 使用 SVG 绘制曲线 SVG…

vue实现swipe

vue实现swipe

Vue实现Swipe功能的方法 使用第三方库(推荐) Vue生态中有多个成熟的轮播/滑动组件库,例如vue-awesome-swiper或swiper/vue。以下是基于swiper/vue的实现示例…

vue 实现拖拉

vue 实现拖拉

Vue 实现拖拽功能的方法 使用 HTML5 原生拖放 API HTML5 提供了原生的拖放 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…

vue实现日历

vue实现日历

Vue 实现日历的基本方法 使用 Vue 实现日历可以通过自定义组件或借助第三方库完成。以下是两种常见实现方式: 自定义日历组件 创建基于 Vue 的日历组件需要处理日期计算和渲染逻辑。核心是生成当…

vue实现pwa

vue实现pwa

Vue 实现 PWA 的步骤 Vue 结合 PWA(Progressive Web App)可以创建离线可用的 Web 应用。以下是实现方法: 安装 Vue CLI 并创建项目 确保已安装 Vue…