当前位置:首页 > 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() 方法

创建打印方法:

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 实现打印

创建打印方法:

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;
  }
}

打印背景颜色和图像:

vue实现打印功能

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

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

相关文章

vue实现旋转

vue实现旋转

Vue 实现旋转效果的方法 在 Vue 中实现旋转效果可以通过多种方式完成,以下是几种常见的方法: 使用 CSS 动画 通过 Vue 的 :class 或 :style 绑定 CSS 动画实现旋转效…

vue实现grid

vue实现grid

Vue 实现 Grid 布局的方法 使用 CSS Grid 布局 Vue 可以结合 CSS Grid 布局实现灵活的网格系统。CSS Grid 是现代浏览器原生支持的布局方案,无需额外依赖库。 &l…

vue 实现单选

vue 实现单选

使用 v-model 绑定单选值 在 Vue 中,可以通过 v-model 绑定单选按钮的值。定义一个响应式数据(如 selectedOption),并将其与单选按钮的 value 属性关联。…

vue 实现打印

vue 实现打印

Vue 实现打印功能的方法 在Vue项目中实现打印功能,可以通过以下几种方式实现: 使用window.print()方法 通过调用浏览器的原生打印API实现基础打印功能,适用于简单内容打印。 //…

vue实现Siri

vue实现Siri

Vue 实现 Siri 风格语音交互 实现类似 Siri 的语音交互功能需要结合语音识别、语音合成和前端交互逻辑。Vue 作为前端框架,可以很好地管理这些功能的交互状态。 语音识别集成 使用 Web…

vue实现队列

vue实现队列

Vue 实现队列功能 在 Vue 中实现队列功能可以通过多种方式完成,以下是几种常见的方法: 使用数组模拟队列 队列遵循先进先出(FIFO)原则,可以用数组的 push 和 shift 方法模拟入队…