vue 文件预览(docx、.xlsx、pdf)

1.ifream

复制代码
<iframe src="" ></iframe> 

注: src里面是文件地址

2.vue-office

支持vue2和vue3提供docx、.xlsx、pdf多种文档的在线预览方案

2.1安装

复制代码
#docx文档预览组件
npm install @vue-office/docx vue-demi

#excel文档预览组件
npm install @vue-office/excel vue-demi

#pdf文档预览组件
npm install @vue-office/pdf vue-demi

如果是vue2.6版本或以下还需要额外安装 @vue/composition-api

复制代码
npm install @vue/composition-api

代码(与ifrem用法类似)

doc:目前只支持docx文件预览,不支持doc文件

excil:目前只支持xlsx文件预览,不支持xls文件

pdf:无

注:doc,excil,pdf代码基本一致(以docx为例)

复制代码
<template>
    <vue-office-docx
        :src="docx"
        style="height: 100vh;"
        @rendered="renderedHandler"
        @error="errorHandler"
    />
</template>

<script>
//引入VueOfficeDocx组件
import VueOfficeDocx from '@vue-office/docx'
//引入相关样式
import '@vue-office/docx/lib/index.css'

export default {
    components: {
        VueOfficeDocx
    },
    data() {
        return {
            docx: '' //设置文档网络地址,可以是相对地址
        }
    },
    methods: {
        renderedHandler() {
            console.log("渲染完成")
        },
        errorHandler() {
            console.log("渲染失败")
        }
    }
}
</script>

上传文件预览: 如果是原生的input type="file",也是类似的

复制代码
<template>
    <div id="docx-demo">
        <el-upload
            :limit="1"
            :file-list="fileList"
            accept=".docx"
            :beforeUpload="beforeUpload"
            action=""
        >
            <el-button size="small" type="warning">点击上传</el-button>
        </el-upload>
        <vue-office-docx :src="src"/>
    </div>
</template>

<script>
import VueOfficeDocx from '@vue-office/docx'
import '@vue-office/docx/lib/index.css'

export default {
    components: {
        VueOfficeDocx
    },
    data() {
        return {
            src: '',
            fileList: []
        }
    },
    methods: {
        //在beforeUpload中读取文件内容
        beforeUpload(file) {
            let reader = new FileReader();
            reader.readAsArrayBuffer(file);
            reader.onload = (loadEvent) => {
                let arrayBuffer = loadEvent.target.result;
                this.src = arrayBuffer
            };
            return false
        }
    }
}
</script>
相关推荐
前端大卫18 小时前
为什么 React 中的 key 不能用索引?
前端
你的人类朋友18 小时前
【Node】手动归还主线程控制权:解决 Node.js 阻塞的一个思路
前端·后端·node.js
小李小李不讲道理20 小时前
「Ant Design 组件库探索」五:Tabs组件
前端·react.js·ant design
毕设十刻20 小时前
基于Vue的学分预警系统98k51(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
Source.Liu20 小时前
【PDF-rs】pdf子项目的lib.rs文件
pdf
mapbar_front21 小时前
在职场生存中如何做个不好惹的人
前端
牧杉-惊蛰21 小时前
纯flex布局来写瀑布流
前端·javascript·css
学会用脚编程21 小时前
word转Pdf,在window正常,放在linux服务器上就转出来中文是空白
pdf·word
一袋米扛几楼981 天前
【软件安全】什么是XSS(Cross-Site Scripting,跨站脚本)?
前端·安全·xss
向上的车轮1 天前
Actix Web适合什么类型的Web应用?可以部署 Java 或 .NET 的应用程序?
java·前端·rust·.net