vue实现预览功能(包括doc,pdf,图片,视频)

时间:2025-02-16 08:59:38
<template> <el-button @click="previewPdf()" type="text" size="small" v-if=""> <div class="images" v-viewer="{ navbar: false}"> <img v-for="(src, index) in images" style="width: 100%" :src="src" :key="src" hidden> 预览 </div> </el-button> <el-dialog :visible="showDoc == true || showPdf == true || showVideo == true" :show-close="true" :width="'80%'" class="dialog-div-pre-style" :before-close="closePreviewClick" center> <div v-if="showDoc == true" class="dialog-body-content-base-style"> <iframe frameborder="0" :src="'/op/?src=' + " width='100%'> </iframe> </div> <div v-else-if="showPdf == true" class="dialog-body-content-base-style" style="justify-content: center; align-items: center"> <embed :src="pdfUrl" style="width: 100%; height: 100%"/> </div> <div v-else-if="showVideo == true" class="dialog-body-content-base-style" style="justify-content: center; align-items: center"> <video-player class="video-player vjs-custom-skin" ref="positiveVideoPlayer" :playsinline="true" :options="positivePlayerOptions" ></video-player> </div> </el-dialog> </template> <script> export default{ data(){ return { showDoc: false, showPdf: false, showVideo: false, fileUrl: "", images: [], currentPage: 0, // pdf文件页码 pageCount: 0, // pdf文件总页数 pdfUrl: "", scale: 1.0, /** *播放器配置 */ positivePlayerOptions: { playbackRates: [0.5, 1.0, 1.5, 2.0], //播放速度 autoplay: false, //如果true,浏览器准备好时开始回放。 muted: false, // 默认情况下将会消除任何音频。 loop: false, // 导致视频一结束就重新开始。 preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持) language: 'zh-CN', aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3") fluid: true, // 当true时, player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。 sources: [{ type: "", src: "" //视频url地址 }], poster: "", //你的封面地址 // width: , notSupportedMessage: '此视频暂无法播放,请稍后再试', //允许覆盖无法播放媒体源时显示的默认信息。 controlBar: { timeDivider: true, durationDisplay: true, remainingTimeDisplay: false, fullscreenToggle: true //全屏按钮 }, common: "positivePlayer", }, } } },
methods:{
 
/**