当前位置:首页 > VUE

vue实现打印标签

2026-01-17 06:34:59VUE

实现 Vue 打印标签的方法

使用 window.print() 方法

在 Vue 中可以通过调用浏览器原生的 window.print() 方法实现打印功能。创建一个专门用于打印的组件或页面,隐藏不需要打印的元素。

<template>
  <div>
    <button @click="print">打印标签</button>
    <div id="printArea" class="print-only">
      <!-- 标签内容 -->
      <div v-for="item in labels" :key="item.id">
        {{ item.text }}
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      labels: [
        { id: 1, text: '标签1' },
        { id: 2, text: '标签2' }
      ]
    }
  },
  methods: {
    print() {
      window.print()
    }
  }
}
</script>

<style>
@media print {
  body * {
    visibility: hidden;
  }
  .print-only, .print-only * {
    visibility: visible;
  }
  .print-only {
    position: absolute;
    left: 0;
    top: 0;
  }
}
</style>

使用第三方库 vue-print-nb

vue-print-nb 是一个专门为 Vue 设计的打印插件,使用起来更加方便。

安装插件:

npm install vue-print-nb --save

在 main.js 中引入:

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

在组件中使用:

<template>
  <div>
    <button v-print="printObj">打印标签</button>
    <div id="printContent">
      <!-- 标签内容 -->
      <div v-for="item in labels" :key="item.id">
        {{ item.text }}
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      labels: [
        { id: 1, text: '标签1' },
        { id: 2, text: '标签2' }
      ],
      printObj: {
        id: 'printContent',
        popTitle: '标签打印'
      }
    }
  }
}
</script>

使用 html2canvas 和 jsPDF 生成 PDF

如果需要将标签转换为 PDF 再打印,可以使用 html2canvasjsPDF 库。

安装依赖:

npm install html2canvas jspdf --save

实现代码:

<template>
  <div>
    <button @click="printPDF">打印PDF标签</button>
    <div id="pdfContent">
      <!-- 标签内容 -->
      <div v-for="item in labels" :key="item.id">
        {{ item.text }}
      </div>
    </div>
  </div>
</template>

<script>
import html2canvas from 'html2canvas'
import jsPDF from 'jspdf'

export default {
  data() {
    return {
      labels: [
        { id: 1, text: '标签1' },
        { id: 2, text: '标签2' }
      ]
    }
  },
  methods: {
    printPDF() {
      const element = document.getElementById('pdfContent')
      html2canvas(element).then(canvas => {
        const imgData = canvas.toDataURL('image/png')
        const pdf = new jsPDF()
        pdf.addImage(imgData, 'PNG', 0, 0)
        pdf.save('labels.pdf')
      })
    }
  }
}
</script>

使用 CSS 控制打印样式

通过 CSS 的 @media print 可以精细控制打印时的样式,确保标签打印效果符合要求。

@media print {
  @page {
    size: A4;
    margin: 0;
  }
  body {
    margin: 1.6cm;
  }
  .no-print {
    display: none;
  }
  .page-break {
    page-break-after: always;
  }
}

使用专用标签打印插件

对于专业的标签打印需求,可以考虑使用 Labelary 等 Web 服务,它们提供 API 来生成和打印标签。

vue实现打印标签

// 示例调用 Labelary API
fetch('http://api.labelary.com/v1/printers/8dpmm/labels/4x6/0/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/zpl'
  },
  body: '^XA^FO50,50^ADN,36,20^FDHello World^FS^XZ'
})
.then(response => response.blob())
.then(blob => {
  const url = URL.createObjectURL(blob)
  window.open(url)
})

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

相关文章

vue实现购物按钮

vue实现购物按钮

Vue 购物按钮实现方法 基础按钮实现 使用 Vue 的模板语法创建基础按钮组件,绑定点击事件处理购物逻辑: <template> <button @click="addToC…

vue实现跑车

vue实现跑车

Vue 实现跑车动画效果 使用 Vue 结合 CSS 动画可以实现跑车在屏幕上移动的效果。以下是一个完整的实现方案: 创建 Vue 组件结构 <template> <div c…

vue vnode实现

vue vnode实现

Vue VNode 实现原理 VNode(Virtual Node)是 Vue 的核心概念之一,用于描述真实 DOM 的轻量级虚拟表示。VNode 的实现涉及以下关键点: VNode 的基本结构 V…

实现.vue文件

实现.vue文件

创建.vue文件的基本结构 一个标准的.vue文件包含三个部分:模板(template)、脚本(script)和样式(style)。这种结构允许开发者在一个文件中管理组件的HTML、JavaScrip…

通过vue实现

通过vue实现

Vue 实现方法 安装 Vue 确保已安装 Node.js 和 npm,通过以下命令安装 Vue CLI: npm install -g @vue/cli 创建 Vue 项目 使用 Vue CLI…

vue实现换行

vue实现换行

Vue 中实现换行的几种方法 在 Vue 中实现换行可以通过多种方式,具体取决于使用场景和需求。以下是常见的几种方法: 使用 HTML 的 <br> 标签 在模板中直接使用 <br…