前端OFD文件预览(vue案例cafe-ofd)

0、提示

下面只有vue的使用示例demo ,官文档参考 cafe-ofd - npm

其他平台可以参考 ofd - npm

官方线上demo: ofd

1、安装包

bash 复制代码
npm install cafe-ofd --save

2、引入

html 复制代码
import cafeOfd from 'cafe-ofd'
import 'cafe-ofd/package/index.css'
Vue.use(cafeOfd)

3、使用案例(借助了element的组件可以替换其他)

html 复制代码
<template>

  <div style="padding: 20px 100px; font-size: 20px">
    <h1>ofd文件预览</h1>
    <h1>https://www.npmjs.com/package/cafe-ofd</h1>
    <h1>npm install cafe-ofd --save</h1>
    <h1>
      import cafeOfd from 'cafe-ofd' <br>
      import 'cafe-ofd/package/index.css'<br>
      Vue.use(cafeOfd)
    </h1>
    <el-upload
        class="upload-demo"
        ref="upload"
        action=""
        :on-preview="handlePreview"
        :file-list="fileList"
        :auto-upload="false">
      <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
    </el-upload>
    <div style="width: 100%; height: 60vh; border: 1px solid red; background-color:#ccc;" id="easyofd">
      <cafe-ofd ref="ofd" :filePath="file" @on-success="load" @on-scroll="scroll">
        <div slot="header">
          <input type="file" ref="file" class="hidden" placeholder="选择文件" accept=".ofd" @change="fileChanged">
        </div>
        <div slot="footer" class="footer">
          <el-button @click="plus">放大</el-button>
          <el-button @click="minus">缩小</el-button>
          <el-button @click="pre" :disabled="currentNum <= 1">上一页</el-button>
          <el-input type="number" :min="1" :max="pageNum" v-model.number="currentNum" @change="pageChange(currentNum)"></el-input>
          <el-button @click="next" :disabled="currentNum >= pageNum">下一页</el-button>
          <el-button @click="print">打印</el-button>
        </div>
      </cafe-ofd>
    </div>
  </div>

</template>

<script>
export default {
  data(){
    return {
      fileList: [],
      currentNum: null,
      file: null,
      pageNum: null
    }
  },

  mounted() {
  },
  methods: {
    handlePreview(e){
      this.file = e.raw
    },
    load(val) {
      this.pageNum = val;
    },
    fileChanged() {
      this.file = this.$refs.file.files[0];
    },
    plus() {
      this.$refs.ofd.scale(1.1);
    },
    minus() {
      this.$refs.ofd.scale(-0.9);
    },
    next() {
      this.$refs.ofd.nextPage();
    },
    pre() {
      this.$refs.ofd.prePage();
    },
    pageChange(val) {
      this.$refs.ofd.goToPage(val);
    },
    print() {
      this.$refs.ofd.printFile();
    },
    scroll(val) {
      this.currentNum = val;
    }
  }
}
</script>

<style scoped>
.footer {
  padding: 0 20px;
  display: flex;
  justify-content: space-between;
  gap: 20px;
}
@media print {
  html,
  body,
  #app {
    height: auto;
    overflow: auto;
  }
}
</style>

4、案例-图示

相关推荐
Highcharts.js1 小时前
Highcharts 云端渲染的真相:交互式图表与服务器端生成的边界
前端·信息可视化·服务器渲染·highcharts·图表渲染
zhuyan1082 小时前
Linux 系统磁盘爆满导致无法启动修复指南
前端·chrome
编程牛马姐3 小时前
独立站SEO流量增长:提高Google排名的优化方法
前端·javascript·网络
NotFound4863 小时前
实战指南如何实现Java Web 拦截机制:Filter 与 Interceptor 深度分享
java·开发语言·前端
Dontla3 小时前
高基数(High Cardinality)问题介绍(Prometheus、高基数字段、低基数字段)
前端·数据库·prometheus
一 乐4 小时前
医院挂号|基于springboot + vue医院挂号管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·医院挂号管理系统
whuhewei6 小时前
为什么客户端不存在跨域问题
前端·安全
妮妮喔妮6 小时前
supabase的webhook报错
开发语言·前端·javascript
qq_12084093716 小时前
Three.js 大场景分块加载实战:从全量渲染到可视集调度
开发语言·javascript·数码相机
yivifu6 小时前
手搓HTML双行夹批效果
前端·html·html双行夹注