当前位置:首页 > React

react实现word预览

2026-01-27 06:25:44React

React 实现 Word 预览

在 React 中实现 Word 文档预览可以通过多种方式完成,以下是几种常见的方法:

使用第三方库 mammoth.js

mammoth.js 是一个用于将 .docx 文件转换为 HTML 的库,适合在浏览器端直接处理 Word 文档。

安装依赖:

npm install mammoth

示例代码:

import React, { useState } from 'react';
import * as mammoth from 'mammoth';

function WordPreview() {
  const [html, setHtml] = useState('');

  const handleFileChange = async (e) => {
    const file = e.target.files[0];
    const reader = new FileReader();
    reader.onload = async (event) => {
      const arrayBuffer = event.target.result;
      const result = await mammoth.extractRawText({ arrayBuffer });
      setHtml(result.value);
    };
    reader.readAsArrayBuffer(file);
  };

  return (
    <div>
      <input type="file" onChange={handleFileChange} accept=".docx" />
      <div dangerouslySetInnerHTML={{ __html: html }} />
    </div>
  );
}

export default WordPreview;

使用 Office.js 官方库

Office.js 是微软官方提供的库,适合在 Office 插件或网页中嵌入 Word 预览功能。

react实现word预览

安装依赖:

npm install @microsoft/office-js

示例代码:

import React, { useEffect } from 'react';
import * as Office from '@microsoft/office-js';

function WordPreview() {
  useEffect(() => {
    Office.onReady(() => {
      console.log('Office.js is ready');
    });
  }, []);

  return (
    <div>
      <button onClick={() => Office.context.document.getFileAsync()}>
        Preview Word
      </button>
    </div>
  );
}

export default WordPreview;

使用 Google Docs Viewer

通过嵌入 Google Docs Viewer 的 iframe 实现预览,适合快速实现但不支持编辑。

react实现word预览

示例代码:

import React from 'react';

function WordPreview() {
  const docUrl = 'https://docs.google.com/viewer?url=YOUR_DOC_URL&embedded=true';

  return (
    <div>
      <iframe
        src={docUrl}
        width="100%"
        height="500px"
        frameBorder="0"
      />
    </div>
  );
}

export default WordPreview;

使用后端服务转换

如果文档需要更复杂的处理,可以通过后端服务将 Word 转换为 PDF 或 HTML,再在 React 中显示。

示例代码(假设后端返回 HTML):

import React, { useState, useEffect } from 'react';
import axios from 'axios';

function WordPreview() {
  const [html, setHtml] = useState('');

  useEffect(() => {
    axios.get('/api/convert-word-to-html')
      .then(response => setHtml(response.data));
  }, []);

  return (
    <div dangerouslySetInnerHTML={{ __html: html }} />
  );
}

export default WordPreview;

注意事项

  • 文件安全性:直接使用 dangerouslySetInnerHTML 需确保内容来源可信,避免 XSS 攻击。
  • 性能优化:大文件处理时建议分片或使用后端服务。
  • 格式兼容性:某些复杂格式可能无法完全保留,需测试目标文档的渲染效果。

以上方法可根据实际需求选择,mammoth.js 适合纯前端解决方案,Office.js 适合深度集成,Google Docs Viewer 适合快速嵌入。

标签: reactword
分享给朋友:

相关文章

react如何同步

react如何同步

React 同步状态管理方法 在 React 中实现同步状态管理,可以通过以下多种方式实现: 使用 useState 和 useEffect 钩子 通过 useState 定义状态,使用 useEf…

react如何发布

react如何发布

发布React应用的步骤 构建生产版本 使用以下命令生成优化后的生产版本代码,代码会被压缩并移除开发环境中的调试工具: npm run build 构建完成后会生成build文件夹,包含所有静态资源…

react如何debugger

react如何debugger

调试 React 应用的方法 使用浏览器开发者工具进行调试 React 开发者工具(React DevTools)是调试 React 应用的必备工具。安装 Chrome 或 Firefox 扩展后,可…

react 如何修改state

react 如何修改state

修改 state 的基础方法 在 React 中,state 的修改必须通过 setState 方法(类组件)或 state 更新函数(函数组件)。直接修改 state 会导致组件不会重新渲染,且可能…

如何调试react源码

如何调试react源码

调试React源码的方法 克隆React源码仓库到本地: git clone https://github.com/facebook/react.git cd react 安装依赖并构建开发版本:…

react 如何设置 代理

react 如何设置 代理

在 React 中设置代理 在开发过程中,为了跨域请求后端 API,可以通过配置代理来解决。以下是几种常见的设置代理的方法: 使用 package.json 配置代理 在 package.json…