当前位置:首页 > 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()原生方法

创建一个可打印的组件:

React实现打印word

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库:

React实现打印word

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

实现代码:

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

相关文章

vue实现导出word

vue实现导出word

Vue 实现导出 Word 文档 在 Vue 项目中实现导出 Word 文档的功能,可以通过以下几种方法实现: 使用 docx 库生成 Word 文档 docx 是一个用于生成 Word 文档的 J…

vue怎么实现导出word

vue怎么实现导出word

使用 docx 库生成 Word 文件 安装 docx 库: npm install docx 在 Vue 组件中引入并创建 Word 文档: import { Document, Parag…

React如何获取li

React如何获取li

获取单个 <li> 元素 在 React 中,可以通过 ref 直接获取 DOM 元素。使用 useRef 钩子创建引用,并将其绑定到目标 <li> 元素上。 imp…

React如何定时刷新

React如何定时刷新

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

React如何监听数据

React如何监听数据

监听数据的方法 在React中监听数据变化可以通过多种方式实现,具体取决于数据的来源和状态管理方式。 使用useEffect钩子 useEffect是React Hooks中用于监听数据变化的常用…

React如何创建store

React如何创建store

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