当前位置:首页 > 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实现pie

vue实现pie

Vue 实现饼图 在 Vue 中实现饼图通常可以通过第三方图表库(如 ECharts、Chart.js 或 Highcharts)来完成。以下是使用 ECharts 和 Chart.js 的两种常见方…

vue实现定时

vue实现定时

Vue 实现定时功能的方法 使用 setInterval 和 clearInterval 在 Vue 中可以通过 setInterval 和 clearInterval 实现定时功能。在组件的 mou…

vue实现tab

vue实现tab

Vue 实现 Tab 切换功能 在 Vue 中实现 Tab 切换功能可以通过多种方式完成,以下是几种常见的实现方法: 使用 v-if 和 v-show 指令 通过绑定 v-if 或 v-show 来…

vue 实现单点登录

vue 实现单点登录

单点登录(SSO)实现原理 单点登录允许用户通过一次身份验证访问多个系统。核心原理是用户首次登录后,认证中心颁发令牌(如Token),其他系统通过验证令牌实现免登录。 Vue中实现SSO的方案 基于…

简单实现vue github

简单实现vue github

实现一个简单的 Vue 项目并上传到 GitHub 创建 Vue 项目 使用 Vue CLI 快速初始化一个 Vue 项目,确保已安装 Node.js 和 npm/yarn。运行以下命令创建项目:…

vue实现全屏滚动

vue实现全屏滚动

实现全屏滚动的 Vue 方法 使用第三方库 vue-fullpage.js 安装 vue-fullpage.js: npm install vue-fullpage.js 在 Vue 项目中引入并注…