当前位置:首页 > 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 中引入:

vue实现打印标签

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 库。

安装依赖:

vue实现打印标签

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 来生成和打印标签。

// 示例调用 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中实现按钮组轮换效果可以通过动态绑定类和事件处理来完成。以下是一种常见的实现方式: 模板部分 <template> <div class="…

vue实现3d宇宙

vue实现3d宇宙

Vue实现3D宇宙效果 使用Three.js库 Three.js是一个强大的JavaScript 3D库,可以轻松集成到Vue项目中。安装Three.js依赖: npm install three…

vue实现视窗

vue实现视窗

Vue 实现视窗功能 在 Vue 中实现视窗功能通常涉及监听浏览器窗口大小变化、响应式布局或创建自定义弹窗组件。以下是几种常见实现方式: 监听浏览器窗口大小变化 使用 Vue 的 mounted 和…

vue   实现单选

vue 实现单选

Vue 实现单选功能 在 Vue 中实现单选功能可以通过多种方式,以下是几种常见的方法: 使用原生 <input type="radio"> 绑定 v-model 通过 v-model…

vue datepicker 实现

vue datepicker 实现

实现 Vue Datepicker 的基本方法 在 Vue 项目中实现日期选择功能,可以使用第三方库如 vue-datepicker 或 v-calendar。以下是两种常见实现方式: 安装 vue…

vue  select实现

vue select实现

Vue Select 实现方法 在 Vue 中实现下拉选择功能可以使用原生 <select> 标签或第三方库如 vue-select。以下是两种方法的详细说明: 原生 HTML Sele…