当前位置:首页 > 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中实现点击排序功能,可以通过以下几种方式完成: 使用计算属性结合排序方法 定义一个响应式数据存储排序状态,通过计算属性动态返回排序后的数组。点击事件切换排序状态。…

vue架构实现

vue架构实现

Vue 架构实现核心方案 Vue.js 的架构实现通常围绕模块化、组件化和状态管理展开。以下为常见实现方案: 基于单文件组件(SFC)的模块化 通过 .vue 文件组织模板、脚本和样式: <…

vue实现删除

vue实现删除

Vue 实现删除功能的方法 在 Vue 中实现删除功能通常涉及以下几个步骤: 数据绑定与列表渲染 使用 v-for 指令渲染列表数据,并为每个项绑定唯一标识符(如 id)。例如: <…

vue 实现回复

vue 实现回复

Vue 实现回复功能 在 Vue 中实现回复功能通常涉及表单提交、数据绑定和列表渲染。以下是实现步骤和代码示例: 数据绑定与表单 <template> <div>…

vue实现换肤

vue实现换肤

使用 CSS 变量实现换肤 在 Vue 项目中,可以通过 CSS 变量(Custom Properties)动态切换主题色。CSS 变量可以在运行时修改,适合实现换肤功能。 定义全局 CSS 变量:…

vue实现gps

vue实现gps

Vue 中实现 GPS 定位功能 在 Vue 中实现 GPS 定位功能通常依赖于浏览器的 Geolocation API 或第三方地图服务(如高德、百度地图等)。以下是两种常见的实现方式: 使用浏览…