当前位置:首页 > 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中,取消渲染通常指的是在某些条件下阻止组件渲染或中断正在进行的渲染过程。以下是几种常见的方法: 条件渲染 通过条件判断决定是否渲染组件或部分内容。可以使用if语句或三元…

react moment如何使用

react moment如何使用

安装 react-moment 通过 npm 或 yarn 安装 react-moment: npm install react-moment 或 yarn add react-moment…

react如何查

react如何查

React 查询方法 React 提供了多种查询 DOM 元素的方式,以下是几种常见的方法: 使用 ref 通过 useRef 钩子可以获取 DOM 节点的引用,适用于直接操作 DOM 的场景。…

react如何运行

react如何运行

运行React项目的步骤 安装Node.js 确保系统已安装Node.js(建议版本12以上),可从官网下载并安装。Node.js自带npm包管理器,用于后续依赖安装。 创建React项目 使用官…

react如何收录

react如何收录

React 收录方法 React 的收录主要涉及搜索引擎优化(SEO)和预渲染技术。由于 React 是单页应用(SPA),默认情况下内容由 JavaScript 动态生成,可能导致搜索引擎爬虫难以收…

react如何encode

react如何encode

React 中编码的实现方式 在 React 中,编码通常涉及对 URL、HTML 实体或特殊字符的处理。以下是几种常见的编码方法: 使用 encodeURIComponent 进行 URL 编码…