当前位置:首页 > VUE

vue项目实现打印

2026-02-18 00:06:05VUE

实现 Vue 项目打印功能的方法

使用 window.print() 基础打印

在 Vue 组件中直接调用浏览器原生打印 API,适合简单内容打印。

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

需配合 CSS 打印样式优化:

@media print {
  .no-print {
    display: none;
  }
  body {
    visibility: hidden;
  }
  .print-area {
    visibility: visible;
    position: absolute;
    left: 0;
    top: 0;
  }
}

使用 vue-print-nb 插件

专为 Vue 设计的打印插件,支持局部打印和自定义配置。 安装:

npm install vue-print-nb --save

使用示例:

vue项目实现打印

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

<template>
  <div id="printContent">
    <!-- 要打印的内容 -->
  </div>
  <button v-print="printConfig">打印</button>
</template>

<script>
export default {
  data() {
    return {
      printConfig: {
        id: 'printContent',
        popTitle: '打印标题',
        extraCss: 'https://example.com/print.css'
      }
    }
  }
}
</script>

使用 html2canvas + jsPDF 实现复杂打印

适用于需要将 DOM 转换为 PDF 的场景。 安装依赖:

npm install html2canvas jspdf

实现代码:

vue项目实现打印

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

methods: {
  async exportToPDF() {
    const element = document.getElementById('printArea');
    const canvas = await html2canvas(element);
    const imgData = canvas.toDataURL('image/png');

    const pdf = new jsPDF({
      orientation: 'portrait',
      unit: 'mm'
    });

    const imgProps = pdf.getImageProperties(imgData);
    const pdfWidth = pdf.internal.pageSize.getWidth();
    const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width;

    pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight);
    pdf.save('document.pdf');
  }
}

打印优化技巧

添加打印按钮时考虑用户体验:

<button @click="handlePrint" class="print-button">
  <i class="printer-icon"></i> 打印文档
</button>

处理分页问题:

@media print {
  .page-break {
    page-break-after: always;
  }
}

动态加载打印内容:

async loadPrintData() {
  const res = await axios.get('/api/print-data');
  this.printContent = res.data;
  this.$nextTick(() => {
    window.print();
  });
}

注意事项

  • 测试不同浏览器的打印兼容性
  • 处理打印时的图片跨域问题
  • 考虑添加打印取消回调函数
  • 移动端需检测打印功能支持情况

以上方法可根据项目需求选择使用,简单场景推荐 vue-print-nb,复杂报表建议使用 html2canvas 方案。

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

相关文章

实现.vue文件

实现.vue文件

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

vue  实现tab

vue 实现tab

实现 Tab 切换功能 在 Vue 中实现 Tab 切换功能可以通过动态组件或条件渲染完成。以下是两种常见方法: 使用 v-if 或 v-show 实现条件渲染 通过绑定 currentTab 变量…

vue实现flvvideo

vue实现flvvideo

vue-flv-player 实现 FLV 视频播放 安装依赖包 npm install flv.js vue-flv-player 基础组件引入 <template> <v…

vue实现爬虫

vue实现爬虫

Vue 实现爬虫的基本思路 Vue.js 本身是一个前端框架,主要用于构建用户界面。要实现爬虫功能,通常需要结合后端技术或浏览器自动化工具。以下是几种常见的方法: 方法一:Vue + Node.js…

vue实现keepalive

vue实现keepalive

Vue 中实现 keep-alive 在 Vue 中,keep-alive 是一个内置组件,用于缓存动态组件或组件的状态,避免重复渲染和销毁。以下是实现 keep-alive 的几种方法: 基本用法…

vue实现录音

vue实现录音

Vue 实现录音功能 在 Vue 中实现录音功能可以通过浏览器提供的 MediaRecorder API 完成。以下是具体实现方法: 引入依赖 确保项目支持现代浏览器 API,无需额外安装库。若需兼…