当前位置:首页 > JavaScript

js框架 实现打印

2026-04-07 11:36:03JavaScript

打印功能实现方式

在JavaScript框架中实现打印功能,可以通过以下几种方法完成:

window.print()方法 直接调用浏览器原生打印API,适用于简单打印需求:

function handlePrint() {
  window.print();
}

这种方法会打印整个网页内容,无法精确控制打印区域。

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

<div id="printableArea">
  <!-- 需要打印的内容 -->
</div>

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

Vue.js实现方案

使用vue-print-nb插件 安装插件后可直接使用v-print指令:

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

// 模板中使用
<button v-print="'#printArea'">打印</button>
<div id="printArea">打印内容</div>

自定义打印组件 创建可复用的打印组件:

js框架 实现打印

// PrintComponent.vue
<template>
  <div>
    <button @click="print">打印</button>
    <div ref="printContent">
      <slot></slot>
    </div>
  </div>
</template>

<script>
export default {
  methods: {
    print() {
      const printWindow = window.open('', '_blank');
      printWindow.document.write(this.$refs.printContent.innerHTML);
      printWindow.document.close();
      printWindow.focus();
      printWindow.print();
      printWindow.close();
    }
  }
}
</script>

React实现方案

使用react-to-print库 安装后通过ref获取打印内容:

npm install react-to-print
import React, { useRef } from 'react';
import { useReactToPrint } from 'react-to-print';

function PrintableComponent() {
  const componentRef = useRef();

  const handlePrint = useReactToPrint({
    content: () => componentRef.current,
  });

  return (
    <div>
      <button onClick={handlePrint}>打印</button>
      <div ref={componentRef}>
        {/* 需要打印的内容 */}
      </div>
    </div>
  );
}

自定义打印样式 通过CSS控制打印效果:

@media print {
  .no-print {
    display: none;
  }
  .print-only {
    display: block;
  }
  @page {
    size: auto;
    margin: 0mm;
  }
}

打印优化技巧

分页控制 使用CSS page-break属性实现分页:

js框架 实现打印

.page-break {
  page-break-after: always;
}

打印预览处理 在打印前处理动态内容:

function prepareForPrint() {
  // 处理图表等动态内容
  if (typeof window.charts !== 'undefined') {
    window.charts.forEach(chart => {
      chart.print();
    });
  }
}

打印事件监听 监听beforeprint和afterprint事件:

window.addEventListener('beforeprint', () => {
  // 打印前处理
});

window.addEventListener('afterprint', () => {
  // 打印后恢复
});

服务端打印方案

PDF生成打印 使用库如pdfmake或jsPDF生成PDF:

const doc = new jsPDF();
doc.text('打印内容', 10, 10);
doc.save('document.pdf');

Node.js服务端打印 通过打印机模块直接打印:

const printer = require('printer');
printer.printDirect({
  data: '打印内容',
  printer: '打印机名称',
  type: 'RAW',
  success: function(jobID) {
    console.log('打印任务ID:', jobID);
  },
  error: function(err) {
    console.error(err);
  }
});

标签: 框架js
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…