欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > vue---- H5页面 pdf,docx,excel文件预览下载功能

vue---- H5页面 pdf,docx,excel文件预览下载功能

2024/12/27 10:14:07 来源:https://blog.csdn.net/heavenz19/article/details/144749820  浏览:    关键词:vue---- H5页面 pdf,docx,excel文件预览下载功能

vue---- H5页面 pdf,docx,excel文件预览&&下载功能

pdf,docx,excel文件预览&&下载适用于vue2和vue3,示例为vue3

1.npm下载这些文件的插件(选择自己需要预览的进行下载)

安装pdf组件
npm install @vue-office/pdf vue-demi安装docx组件
npm install @vue-office/docx vue-demi安装excel组件
npm install @vue-office/excel vue-demi

2.页面渲染完整代码,包含了预览和下载的功能

<template><view class="h-[100%] w-[100%]"><view class="mb-[100rpx] absolute"><top-navtitle="预览"backShow:sheetShow="true"nameIcon="download"@sheetShowBtn="download"><text class="text-[#333333] text-[28rpx]">下载</text></top-nav></view><view class="h-[99vh] w-[100%] relative pt-[50px]"><view class="w-[100%] h-[100%]"><vue-office-pdf :src="url" v-if="type == 'pdf'" /><vue-office-docx :src="url" v-if="type == 'docx' || type == 'doc'" /><vue-office-excel :src="url" v-if="type == 'xlsx' || type == 'xls'" /></view><!-- <iframe:src="'http://www.pfile.com.cn/api/profile/onlinePreview?url=' + url"style="width: 100%; height: 100%; border: none; margin-top: 50px"></iframe> --></view></view>
</template><script setup lang="ts">
import { onLoad } from '@dcloudio/uni-app'
import { ref } from 'vue'
import VueOfficePdf from '@vue-office/pdf'
import VueOfficeDocx from '@vue-office/docx'
import VueOfficeExcel from '@vue-office/excel'import '@vue-office/excel/lib/index.css'
import '@vue-office/docx/lib/index.css'const url = ref('') // 文件地址
const attach_name = ref('') // 文件名
const type = ref('') // 文件类型onLoad((options) => {url.value = decodeURIComponent(options.url!)attach_name.value = options.nametype.value = options.typeconsole.log(attach_name.value)
})/*** @description: 点击下载按钮* @return {*}*/
const download = () => {downloadFile(url.value, attach_name.value)
}/*** @description:  下载文件* @param {*} url 链接地址* @param {*} fileName 文件名* @return {*}*/
async function downloadFile(url, fileName) {try {const response = await fetch(url)if (!response.ok) {throw new Error('文件下载失败,状态码: ' + response.status)}// 将响应内容转换为 Blobconst blob = await response.blob()// 创建 Blob URLconst blobUrl = URL.createObjectURL(blob)// 创建一个隐藏的 <a> 标签const link = document.createElement('a')link.href = blobUrllink.download = fileName // 设置文件名document.body.appendChild(link)link.click()document.body.removeChild(link)// 释放 Blob URLURL.revokeObjectURL(blobUrl)console.log('文件下载成功:', fileName)} catch (error) {console.error('文件下载失败:', error)}
}
</script>

示例图片:
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com