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

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

// 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属性实现分页:

.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服务端打印 通过打印机模块直接打印:

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
分享给朋友:

相关文章

vue实现框架效果

vue实现框架效果

Vue 实现框架效果的方法 Vue.js 可以通过多种方式实现框架效果,包括使用内置指令、组件封装或第三方库。以下是几种常见的方法: 使用 Vue 指令实现基础框架效果 通过 Vue 的 v-if、…

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…