React(四):DOCX文件在线预览

效果

注意

⚠️注意:部分文件预览存在问题

依赖

bash 复制代码
$ yarn add docx-preview
$ yarn add jszip

源码

ts 复制代码
import './index.scss';
import {useRef} from 'react';
import type {UploadRequestOption} from 'rc-upload/lib/interface';
import {Upload, Button, message} from 'antd';
import JSZip from 'jszip';
import * as docx from 'docx-preview';

function PreviewDOCX() {

    const containerRef = useRef<HTMLDivElement>(null);

    const fileUpload = async (options: UploadRequestOption) => {

        if ((options.file as File).name.split('.').pop()!.toLowerCase() !== 'docx') return message.error('仅支持docx文件!');

        const zip = await JSZip.loadAsync(options.file as File);
        const blob = await zip.generateAsync({type: 'blob'});

        docx.renderAsync(blob, containerRef.current!)
            .then(res => {
                console.log(res);
            })
            .catch(err => {
                console.log({err});
            });
    };

    return (
        <>
            <Upload className="upload-btn" action="#" customRequest={fileUpload} showUploadList={false}>
                <Button type="primary">点击上传</Button>
            </Upload>
            <div className="docx-preview-wrap" ref={containerRef}></div>
        </>
    );
}

export default PreviewDOCX;
相关推荐
凯瑟琳.奥古斯特20 分钟前
Bootstrap快速上手指南
开发语言·前端·css·bootstrap·html
精益数智工坊25 分钟前
拆解制造业仓库物料管理流程:如何通过标准化仓库物料管理流程解决账实不符难题
大数据·前端·数据库·人工智能·精益工程
恶猫29 分钟前
网页自动化模拟操作时,模拟真实按键触发事件【终级方案】
前端·javascript·自动化·vue·网页模拟
小羊Yveesss1 小时前
2026年前端开发新趋势:智能协同、工具革新与场景深耕
前端·ai
Dxy12393102161 小时前
HTML中的Canvas可以干哪些事情
前端·html
悟乙己1 小时前
解析 Agent 时代的 HTML PPT SKILLS: html-ppt-skill
前端·html·powerpoint
ZC跨境爬虫1 小时前
跟着 MDN 学 HTML day_2:(表单分组与高级输入控件实战)
前端·javascript·css·ui·html
ppandss12 小时前
JavaWeb从0到1-DAY4-AJAX
前端·ajax·okhttp
千寻girling2 小时前
滑动窗口刷了快一个月(26天)了 , 还没有刷完. | 含(操作系统学什么的Java 后端)
java·开发语言·javascript·c++·人工智能·后端·python
一袋米扛几楼982 小时前
【报错问题】彻底解决 TypeScript 报错 TS2769: No overload matches this call (JWT 篇)
linux·javascript·typescript