当前位置:首页 > React

React实现打印word

2026-01-26 17:38:08React

使用React实现打印Word文档

在React中实现打印Word文档功能,可以通过以下几种方法实现:

方法一:使用第三方库react-to-print

安装react-to-print库:

npm install react-to-print

在组件中使用:

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

const WordPrintComponent = () => {
  const componentRef = useRef();

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

  return (
    <div>
      <div ref={componentRef}>
        {/* 这里放置Word文档内容 */}
        <h1>Word文档标题</h1>
        <p>文档内容...</p>
      </div>
      <button onClick={handlePrint}>打印文档</button>
    </div>
  );
};

export default WordPrintComponent;

方法二:使用window.print()原生方法

创建一个可打印的组件:

const PrintableComponent = () => {
  const handlePrint = () => {
    window.print();
  };

  return (
    <div>
      <div className="print-content">
        {/* Word文档内容 */}
        <h1>文档标题</h1>
        <p>文档正文内容...</p>
      </div>
      <button onClick={handlePrint}>打印</button>
    </div>
  );
};

添加CSS样式控制打印效果:

@media print {
  body * {
    visibility: hidden;
  }
  .print-content, .print-content * {
    visibility: visible;
  }
  .print-content {
    position: absolute;
    left: 0;
    top: 0;
  }
}

方法三:使用docx.js生成Word文档

安装docx.js库:

npm install docx

创建并下载Word文档:

import { Document, Paragraph, TextRun, Packer } from "docx";

const generateWordDoc = async () => {
  const doc = new Document({
    sections: [{
      children: [
        new Paragraph({
          children: [
            new TextRun("Word文档标题"),
          ],
        }),
        new Paragraph({
          children: [
            new TextRun("文档内容..."),
          ],
        }),
      ],
    }],
  });

  const blob = await Packer.toBlob(doc);
  const url = URL.createObjectURL(blob);
  const link = document.createElement('a');
  link.href = url;
  link.download = 'document.docx';
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
};

方法四:使用模板引擎生成Word

使用html-docx-js将HTML转换为Word:

npm install html-docx-js

实现代码:

React实现打印word

import htmlDocx from 'html-docx-js';

const convertToWord = () => {
  const html = `
    <h1>Word文档标题</h1>
    <p>文档内容...</p>
  `;

  const converted = htmlDocx.asBlob(html);
  const url = URL.createObjectURL(converted);
  const link = document.createElement('a');
  link.href = url;
  link.download = 'document.docx';
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
};

注意事项

  • 打印样式需要通过CSS的@media print规则进行控制
  • 生成Word文档时注意浏览器兼容性问题
  • 复杂文档建议使用专业库如docx.js处理
  • 打印前可添加页面设置选项(方向、边距等)

标签: Reactword
分享给朋友:

相关文章

vue3实现word

vue3实现word

Vue3 实现 Word 功能 在 Vue3 中实现类似 Word 的功能,可以通过富文本编辑器库或直接操作 DOM 来实现。以下是几种常见的方法: 使用富文本编辑器库 推荐使用成熟的富文本编辑器库…

React如何定时刷新

React如何定时刷新

使用setInterval实现定时刷新 在React中,可以通过setInterval在组件挂载时设置定时器,组件卸载时清除定时器。这种方式适用于需要在固定间隔执行某些操作的场景。 import R…

React如何创建store

React如何创建store

创建 Redux Store 的基本步骤 安装 Redux 和 React-Redux 依赖包: npm install redux react-redux 创建 reducer 函数管理状态:…

React如何访问子组件dom

React如何访问子组件dom

使用 ref 和 React.forwardRef 父组件通过 ref 直接访问子组件的 DOM 节点。子组件需要使用 React.forwardRef 将 ref 转发到内部的 DOM 元素。…

React实现cad

React实现cad

React 实现 CAD 功能 在 React 中实现 CAD(计算机辅助设计)功能通常需要结合第三方库或框架,以下是一些常见的方法和工具: 使用 Three.js 进行 3D 建模 Three.j…

React实现浏览文件

React实现浏览文件

文件选择基础实现 使用HTML的<input type="file">元素结合React状态管理实现基础文件选择功能: import { useState } from 'react';…