当前位置:首页 > 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
分享给朋友:

相关文章

vue实现生成word

vue实现生成word

Vue 中实现生成 Word 文档的方法 使用 docx 库生成 Word 文档 安装 docx 库: npm install docx 创建一个 Vue 组件或方法,使用 docx 生成 Word…

React如何刷新当前组件

React如何刷新当前组件

强制刷新当前组件 使用forceUpdate方法可以强制React组件重新渲染,即使状态或属性未发生变化。这种方法应谨慎使用,通常仅在直接修改了类组件的实例属性时使用。 this.forceUpda…

React如何让modal可以被拖动

React如何让modal可以被拖动

实现可拖动Modal的方法 在React中实现可拖动的Modal,可以通过结合HTML5的拖拽API或第三方库如react-draggable来完成。以下是两种常用方法的详细说明: 使用react-…

React实现浏览文件

React实现浏览文件

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

React实现实时聊天

React实现实时聊天

使用Socket.IO实现实时通信 安装Socket.IO客户端库: npm install socket.io-client 创建Socket连接: import io from 'socket…

php实现word转pdf

php实现word转pdf

PHP实现Word转PDF的方法 使用PHP将Word文档转换为PDF可以通过多种方式实现,以下是几种常见的方法: 方法一:使用LibreOffice/OpenOffice命令行工具 安装Libr…