当前位置:首页 > VUE

vue实现打印的方法

2026-02-23 05:14:54VUE

使用 window.print() 方法

在 Vue 中可以直接调用原生 window.print() 方法触发浏览器打印功能。这种方式简单但无法定制打印内容样式。

<template>
  <button @click="handlePrint">打印页面</button>
</template>

<script>
export default {
  methods: {
    handlePrint() {
      window.print();
    }
  }
}
</script>

使用 vue-print-nb 插件

安装 vue-print-nb 插件可以更方便地实现打印功能,支持指定打印区域和自定义样式。

安装插件:

npm install vue-print-nb --save

在 Vue 项目中使用:

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

模板中使用:

<template>
  <div id="printArea">
    <!-- 需要打印的内容 -->
    <h1>打印内容标题</h1>
    <p>打印内容正文</p>
  </div>
  <button v-print="printObj">打印</button>
</template>

<script>
export default {
  data() {
    return {
      printObj: {
        id: 'printArea',
        popTitle: '打印标题', // 打印标题
        extraCss: 'https://example.com/print.css' // 自定义打印样式
      }
    }
  }
}
</script>

使用 CSS 媒体查询控制打印样式

通过 CSS 的 @media print 可以专门为打印设置样式,隐藏不需要打印的元素。

<style>
@media print {
  .no-print {
    display: none;
  }
  body {
    font-size: 12pt;
  }
}
</style>

创建打印专用组件

对于复杂的打印需求,可以创建一个专门的打印组件,动态生成打印内容。

<template>
  <div>
    <button @click="printContent">打印</button>
    <div ref="printContent" class="print-content">
      <!-- 动态内容 -->
    </div>
  </div>
</template>

<script>
export default {
  methods: {
    printContent() {
      const printWindow = window.open('', '_blank');
      printWindow.document.write(`
        <html>
          <head>
            <title>打印内容</title>
            <style>
              body { font-family: Arial; }
              /* 其他打印样式 */
            </style>
          </head>
          <body>
            ${this.$refs.printContent.innerHTML}
          </body>
        </html>
      `);
      printWindow.document.close();
      printWindow.focus();
      printWindow.print();
      printWindow.close();
    }
  }
}
</script>

使用 html2canvas 和 jsPDF 生成 PDF 打印

对于需要将 HTML 转换为 PDF 打印的情况,可以使用 html2canvas 和 jsPDF 库。

安装依赖:

npm install html2canvas jspdf

使用示例:

vue实现打印的方法

import html2canvas from 'html2canvas';
import jsPDF from 'jspdf';

export default {
  methods: {
    async printPDF() {
      const element = document.getElementById('printArea');
      const canvas = await html2canvas(element);
      const imgData = canvas.toDataURL('image/png');
      const pdf = new jsPDF();
      pdf.addImage(imgData, 'PNG', 0, 0);
      pdf.save('document.pdf');
      // 或者直接打印
      // const blob = pdf.output('blob');
      // window.open(URL.createObjectURL(blob));
    }
  }
}

以上方法提供了从简单到复杂的多种 Vue 打印实现方案,可以根据项目需求选择合适的方式。

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

相关文章

vue 动画实现

vue 动画实现

Vue 动画实现方式 Vue 提供了多种方式实现动画效果,主要分为内置组件和第三方库集成。 使用 Vue 内置过渡组件 Vue 的 <transition> 和 <transiti…

vue拼图实现

vue拼图实现

实现 Vue 拼图游戏的方法 使用 Vue 组件和动态数据绑定 创建一个 Vue 组件来管理拼图的状态和逻辑。通过 v-for 动态渲染拼图块,利用 v-bind 绑定样式和位置。拼图块的数据可以存储…

vue 分页 实现

vue 分页 实现

Vue 分页实现方法 使用第三方库(如 Element UI) Element UI 提供了现成的分页组件 el-pagination,适合快速集成。 安装 Element UI: npm ins…

vue实现折叠

vue实现折叠

Vue 实现折叠功能 在 Vue 中实现折叠功能可以通过多种方式完成,以下介绍几种常见的方法。 使用 v-show 或 v-if 控制显示隐藏 通过 Vue 的指令 v-show 或 v-if 可以…

vue框架实现

vue框架实现

Vue 框架实现方法 Vue 是一个渐进式 JavaScript 框架,适用于构建用户界面。以下是一些核心实现方法,涵盖基本使用、组件化、状态管理和优化技巧。 基本项目搭建 使用 Vue CLI…

vue实现联动

vue实现联动

Vue 实现联动效果 联动效果通常指多个组件或表单元素之间相互影响,例如选择省份后动态加载城市列表。Vue 提供了多种方式实现联动,包括数据绑定、计算属性、侦听器等。 数据驱动联动 通过 Vue 的…