当前位置:首页 > VUE

vue如何实现单据打印

2026-02-24 19:49:29VUE

Vue 实现单据打印的方法

使用浏览器原生打印 API

Vue 中可以直接调用浏览器的 window.print() 方法实现打印功能。这种方式适合打印当前页面或部分 DOM 内容。

methods: {
  handlePrint() {
    window.print();
  }
}

打印特定区域

通过 CSS 控制打印范围,隐藏非打印内容:

@media print {
  .no-print {
    display: none;
  }
  .print-area {
    display: block !important;
  }
}

使用打印插件

vue-print-nb 是常用的 Vue 打印插件,支持指定打印区域和自定义样式:

安装:

vue如何实现单据打印

npm install vue-print-nb --save

使用:

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

<template>
  <div id="printArea">打印内容</div>
  <button v-print="'#printArea'">打印</button>
</template>

生成 PDF 打印

使用 jsPDF 或 html2pdf.js 库将内容转为 PDF 后打印:

安装:

vue如何实现单据打印

npm install jspdf html2pdf.js

示例代码:

import html2pdf from 'html2pdf.js'

methods: {
  exportPDF() {
    const element = document.getElementById('print-content');
    const opt = {
      margin: 10,
      filename: 'document.pdf',
      image: { type: 'jpeg', quality: 0.98 },
      html2canvas: { scale: 2 },
      jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
    };
    html2pdf().from(element).set(opt).save();
  }
}

打印样式优化

通过 CSS 专门设置打印样式:

@media print {
  body {
    font-size: 12pt;
    color: #000;
  }
  table {
    width: 100%;
    border-collapse: collapse;
  }
  @page {
    size: A4;
    margin: 0;
  }
}

服务端打印方案

对于复杂打印需求,可将数据发送到后端生成打印文件:

axios.post('/api/print', { data: this.printData })
  .then(response => {
    window.open(response.data.url, '_blank');
  });

注意事项

  • 打印预览在不同浏览器中表现可能不一致
  • 复杂表格和样式需要专门测试打印效果
  • 移动端打印功能支持有限
  • 考虑添加打印加载状态和错误处理

以上方法可根据具体需求选择使用,简单打印需求使用原生 API 或插件即可,复杂需求建议采用 PDF 生成方案。

分享给朋友:

相关文章

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

react如何实现插槽

react如何实现插槽

React 实现插槽的方法 React 本身没有直接提供类似 Vue 的插槽(slot)概念,但可以通过以下几种方式实现类似功能: 使用 props.children React 组件可以通过 pr…

java如何实现多态

java如何实现多态

多态的概念 多态是面向对象编程的三大特性之一(封装、继承、多态),指同一操作作用于不同对象时,可以产生不同的行为。Java中主要通过方法重写(Override)和接口/抽象类实现多态。 实现多态的三…

vue如何实现分离

vue如何实现分离

Vue 实现代码分离的方法 Vue 提供了多种方式实现代码分离,提升项目的可维护性和模块化程度。以下是常见的几种方法: 组件化开发 将功能拆分为独立的 Vue 组件,每个组件包含自己的模板、逻辑和样…

java如何实现多继承

java如何实现多继承

在Java中,由于语言设计本身不支持多继承(即一个类不能直接继承多个父类),但可以通过以下方式间接实现类似多继承的效果: 使用接口实现多继承 接口允许一个类实现多个接口,从而继承多个抽象行为。接口中…

vue路由如何实现

vue路由如何实现

vue路由的实现方法 Vue路由可以通过Vue Router库来实现。Vue Router是Vue.js官方的路由管理器,用于构建单页面应用(SPA)。 安装Vue Router 使用npm或yar…