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

这篇具有很好参考价值的文章主要介绍了前端OFD文件预览(vue案例cafe-ofd)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0、提示

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

其他平台可以参考 ofd - npm

官方线上demo: ofd

1、安装包

npm install cafe-ofd --save

2、引入

import cafeOfd from 'cafe-ofd'
import 'cafe-ofd/package/index.css'
Vue.use(cafeOfd)

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

<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、案例-图示

vue cafe-ofd,前端,vue.js,javascript

5、封装的组件(我在项目中使用的、有使用el组件,只需传入File格式的OFD文件)

<template>
  <div class="previewOFDBox">
    <cafe-ofd
        v-show="file"
        ref="ofd"
        :width="500"
        :filePath="file"
        @on-success="load"
        @on-scroll="scroll"
        :class="['previewOFD', fullScreen ? 'ofd_full_screen' : '']"
    >
      <div slot="footer" class="footer" style="position: absolute; right: 20px; bottom: 10px; z-index: 999">
        <el-button size="mini" circle icon="el-icon-plus" @click="plus"></el-button>
        <el-button size="mini" circle icon="el-icon-minus" @click="minus"></el-button>
        <el-tooltip v-if="fullScreen" effect="light" content="打印(如果打印预览异常,请将文件视图缩放至合适大小)" placement="top">
          <el-button size="mini" circle icon="el-icon-printer" @click="print"></el-button>
        </el-tooltip>
        <el-button size="mini" circle :icon="fullScreen ? 'el-icon-files' : 'el-icon-full-screen'" @click="full"></el-button>
      </div>
    </cafe-ofd>
    <div v-if="!file" style="position: absolute; top: 50%; left: 48%">
      暂无数据
    </div>
  </div>
</template>

<script>
export default {
  name: "previewOFD",
  props: {
    file: {
      type: File,
    }
  },
  data() {
    return {
      pageNum: 1,
      currentNum: null,
      fullScreen: false,
    }
  },
  methods: {
    // 加载成功
    load(val) {
      this.pageNum = val;
      this.$emit('success')
    },
    fileChanged(file) {
      this.file = file
    },
    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;
    },
    full(){
      this.fullScreen = !this.fullScreen
    }
  }
}
</script>

<style scoped>
.previewOFD {
  transition: all .5s;
}
.previewOFDBox {
  position: relative;
  width: 100%;
  height: 100%;
}
.ofd_full_screen {
  z-index: 9999;
  position: fixed;
  left: 0;
  top: 0;
  width: 100vw;
  height: 100vh;
  padding: 10px;
  box-shadow: 0 0 4px #000;
  background: rgba(0, 0, 0, 0.8);
}
</style>

vue cafe-ofd,前端,vue.js,javascript文章来源地址https://www.toymoban.com/news/detail-792059.html

到了这里,关于前端OFD文件预览(vue案例cafe-ofd)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python通过解压ofd文件获取发票信息

    Python通过解压ofd文件获取发票信息 实际上ofd、docx、xlsx等文件就是一个压缩文件,是可以被解压处理的。所以我们把一个ofd格式的发票文件解压后就可以看到它的目录,如下: 再用谷歌或者IE打开里面的xml属性的文件,就可以看到发票相关信息,如下: 所以获取发票信息的实

    2024年02月02日
    浏览(38)
  • Python实现将pdf,docx,xls,doc,wps,zip,xlsx,ofd链接下载并将文件保存到本地

    前言 本文是该专栏的第31篇,后面会持续分享python的各种干货知识,值得关注。 在工作上,尤其是在处理爬虫项目中,会遇到这样的需求。访问某个网页或者在采集某个页面的时候,正文部分含有docx,或pdf,或xls,或doc,或wps,或ofd,或xlsx,或zip等链接。需要你使用python自

    2024年02月17日
    浏览(62)
  • 前端(vue)js在线预览PDF、Word、Excel、ppt等office文件

    可选参数 pdf=true,word文档尝试以pdf方式显示,默认false watermark=水印文本,显示文本水印;“img:”+图片url表示图片水印,如:img:https://view.xdocin.com/demo/wm.png saveable=true,是否允许保存源文件,默认false printable=false,是否允许打印,默认true ©able=false,是否允许选择复制内容,

    2024年02月13日
    浏览(72)
  • 【发票识别】支持pdf、ofd、图片格式(orc、信息提取)的发票

    为了能够满足识别各种发票的功能,特地开发了当前发票识别的功能,当前的功能支持pdf、ofd、图片格式的发票识别,使用到的技术包括文本提取匹配、ocr识别和信息提取等相关的技术,用到机器学习和深度学习的相关技术。 体验地址:https://invoice.behappyto.cn/invoice-service/ 体

    2024年01月16日
    浏览(45)
  • JAVA识别PDF和OFD电子发票并解析为java对象

    上一篇我们说了java实现电子发票中的发票税号等信息识别的几种可用方案,最后博主选取了识别文件二维码的方式,而且文章最后也说了,这种有局限性,去到的信息有限,而且针对OFD格式也得继续想办法,那接下来,我们就说一下怎么处理这个问题,并且如何去识别OFD格式

    2024年02月09日
    浏览(40)
  • 前端js react vue怎么实现在线预览doc文档

    先说结论: 目前在纯前端层面没有很好的方案,基本都需要服务端的介入。 优点 :简单易用,无需配置 缺点 :文档需要支持外网访问,且文档会是公开可见的,所以对于一些内部敏感的文档来说,这个显然是不可行的。 需要后端介入配合 onlyoffice地址 这个也要先在服务器

    2024年02月15日
    浏览(81)
  • 【Vue】后端返回文件流,前端预览文件

      文件预览效果

    2024年01月17日
    浏览(51)
  • 前端js打开pdf文件--文件通过浏览器打开,以pdf形式进行预览

    通过点击button按钮,触发 @click=\\\"openPDF(performance_report)\\\"方法,把对应需要展示的pdf传送到openPDF()方法内,这里的pdf文件格式必须包括id、name、url。 在这里,performance_report为预览的文件:

    2024年02月14日
    浏览(54)
  • vue.js前端框架应用案例

    Vue.js 是一种流行的前端框架,它可以帮助开发者构建单页应用(SPA)和复杂的用户界面。以下是几个 Vue.js 的案例,涵盖了不同领域的应用: Vue.js 官方文档 :Vue.js 的官方文档本身就是一个使用 Vue.js 构建的项目。它展示了 Vue.js 的各种功能和最佳实践,包括组件、指令、混

    2024年02月21日
    浏览(49)
  • Vue中使用pdf.js实现在线预览pdf文件流

    以下是在Vue中使用pdf.js实现在线预览pdf文件流的步骤: 在需要使用的组件中,使用以下代码引入pdf.js: 使用pdf.js的 getDocument() 方法加载pdf文件流。可以将文件流作为Blob对象传递给该方法。例如,可以使用axios从服务器获取pdf文件流: 在 loadPdf() 方法中,使用 getDocument() 方法

    2024年02月09日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包