对于docx、xlsx、pdf文件的在线浏览,有个比较好的插件vue-office
使用方法如下:
1、安装相应插件
//docx文档预览组件 npm install @vue-office/docx -S //excel文档预览组件 npm install @vue-office/excel -S //pdf文档预览组件 npm install @vue-office/pdf -S
2、使用
<template>
    <div>
        <vue-office-docx v-if="fileType=='docx'" :src="fileUrl" @rendered="renderedHandler" @error="errorHandler" />
        <vue-office-excel v-else-if="fileType=='xlsx'" :src="fileUrl" @rendered="renderedHandler" @error="errorHandler" />
        <vue-office-pdf v-else-if="fileType=='pdf'" :src="fileUrl" @rendered="renderedHandler" @error="errorHandler" />
    </div>
</template>
<script>
import VueOfficePdf from '@vue-office/pdf'
import VueOfficeExcel from '@vue-office/excel'
import VueOfficeDocx from '@vue-office/docx'
import '@vue-office/excel/lib/index.css'
import '@vue-office/docx/lib/index.css'
export default {
  components: {
    VueOfficeDocx,
    VueOfficeExcel,
    VueOfficePdf
  },
  data() {
    return {
        fileType: '',
        fileUrl:'',
    }
  }
}
</script>而对于ppt文件的在线浏览,vue-office则没有相关的插件,网上找了几种方法,始终没有能找到很好的在vue上使用的插件,总结方法如下:
1、需要借助第三方库jszip和officegen来进行解析和生成展示页面
https://www.5axxw.com/questions/simple/qnxpwz
2、使用插件pspdfkit(需要收费)
https://pspdfkit.com/getting-started/web
3、使用微软官方的office文件在线查看器
https://juejin.cn/post/7025400224721928223
4、使用js插件pptxjs(最后只能临时使用这种方法)
在PPTXjs官网下载最新版插件,或者下载下面版本插件,并在index.html内引入
<link rel="stylesheet" href="/PPTXjs/css/pptxjs.css"> <link rel="stylesheet" href="/PPTXjs/css/nv.d3.min.css"><!-- for charts graphs --> <script type="text/javascript" src="/PPTXjs/js/jquery-1.11.3.min.js"></script> <script type="text/javascript" src="/PPTXjs/js/jszip.min.js"></script><!-- v2.. , NOT v.3.. --> <script type="text/javascript" src="/PPTXjs/js/filereader.js"></script><!--https://github.com/meshesha/filereader.js --> <script type="text/javascript" src="/PPTXjs/js/d3.min.js"></script> <!-- for charts graphs --> <script type="text/javascript" src="/PPTXjs/js/nv.d3.min.js"></script> <!-- for charts graphs --> <script type="text/javascript" src="/PPTXjs/js/pptxjs.js"></script> <script type="text/javascript" src="/PPTXjs/js/divs2slides.js"></script> <!-- for slide show -->
html代码
<div id="pptx"></div>
js代码
$("#pptx").pptxToHtml({ 
    
    pptxFileUrl: "Sample_12.pptx", //pptx文件地址
    slidesScale: "100%", 
    slideMode: false, 
    keyBoardShortCut: false });如果是移动端或者通过iframe引入导致生成的html元素过大会溢出屏幕,需要把div缩放
// 由于生成的html元素过大会溢出,这里用定时器检测元素生成完毕后进行缩放显示let timer = setInterval(() => { 
   
    const $slides = $(".slides");
    if ($slides.children().length) { 
   
      const slidesWidth = Math.max(...Array.from($slides.children()).map((s) => s.offsetWidth))
      const $wrapper = $('#pptx');
      const wrapperWidth = $wrapper[0].offsetWidth;
      $wrapper.css({ 
   
        transform: `scale(${ 
     wrapperWidth / slidesWidth})`,
        "transform-origin": "top left",
      })
      clearInterval(timer)
    }}, 100);
           本帖已被设为精华帖!