前端pdf流的形式预览

23 篇文章 0 订阅

方式一 http://xxx.xx.com/pdf.pdf 形式

找好插件,或者直接iframe加载就行了

方式二 通过文件流的形式

![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvMjM5NTA0LzE1OTAzOTYxMzgzOTAtNTA4YmZiZmItMzFiNy00M2Q1LWI5YWEtZWFhZDU5NGNiYjRmLnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=157&margin=[object Object]&name=image.png&originHeight=157&originWidth=337&size=7721&status=done&style=none&width=337)

  • 找到 public/pdf/web/viewer.js 搜索 throw new Error("file origin does not match viewer's") 这行代码,然后以一种 优雅大方的姿势 注释掉!!!

下面是上业务代码:

  • PdfPreview 插件
<template>
  <div class="pdf-preview">
    <el-dialog
      :title="title"
      :visible="dialogVisible"
      width="75%"
      destroy-on-close
      class="pdf-dialog"
      @close="handleClose"
    >
      <iframe
        :src="`/pdf/web/viewer.html?file=${pdfSrc}`"
        frameborder="0"
      />
    </el-dialog>
  </div>
</template>

<script>
export default {
  name: 'PdfPrewiew',
  props: {
    title: {
      type: String,
      default: 'pdf 预览'
    },
    dialogVisible: {
      type: Boolean,
      default: false
    },
    pdfSrc: {
      type: String,
      default: ''
    }
  },
  methods: {
    handleClose() {
      this.$emit('update:dialogVisible', false)
    }
  }
}
</script>

<style lang="scss">
  .pdf-dialog{
    .el-dialog__body{
      overflow: hidden;
      iframe{
        height: 500px;
        width: 100%;
      }
    }
  }
</style>

重点就是找到web目录下面的viewer.html文件后面拼装参数即可,参数就是一个地址

<iframe
  :src="`/pdf/web/viewer.html?file=${pdfSrc}`"
  frameborder="0"
 />
  • 使用组件的vue
 // 预览pdf
    prewiewPdf(data) {
      const { file_id } = data
      // get请求后台获取到流,改代码只是参考
      const url = `${process.env.VUE_APP_FILE_PREVIEW}${window.getRequestUrl('/web/file/examine-file-api')}&fileId=${file_id}`
      // 拿到流之后一定要encodeURIComponent转码
      this.pdfSrc = encodeURIComponent(url)
      this.dialogVisiblePdf = true
    }
  • 使用组件
<PdfPreview
  v-if="dialogVisiblePdf"
  title="合同预览"
  :dialog-visible.sync="dialogVisiblePdf"
  :pdf-src="pdfSrc"
/>
Layui是一个前端UI框架,提供了丰富的组件,其中并不直接包含文件形式预览PDF的功能。但是可以通过结合一些第三方库来实现这一功能。常用的第三方JavaScript库是PDF.js,它是一个开源项目,能够将PDF文件渲染到网页中。 要实现Layui文件形式预览PDF,你可以按照以下步骤操作: 1. 引入PDF.js:首先需要将PDF.js库文件引入到你的项目中。可以从其GitHub仓库下载相关的JS文件,并在你的HTML页面中通过<script>标签引入。 2. 创建PDF渲染器:PDF.js提供了一个PDF渲染器,你可以使用它来加载和显示PDF文件。在你的JavaScript代码中,可以创建一个PDF渲染器实例,并使用提供的API加载PDF文件。 3. 使用iframe或者其他容器显示:通常情况下,可以通过创建一个iframe来承载PDF内容,或者直接在某个DOM元素内使用PDF.js提供的API渲染PDF页面。 4. 处理文件:如果你的PDF文件是以文件形式存在,你需要先将其转换为Blob对象或者其他格式,然后再传递给PDF.js进行渲染。这通常需要后端支持,比如使用Node.js来处理文件,并将其转换为可读的Blob对象。 5. 绑定事件和控制:可以为PDF预览功能添加各种事件监听,例如页面跳转、放大缩小、下载等,以提升用户体验。 请注意,由于浏览器的同源策略,直接通过文件预览PDF可能会遇到跨域问题,因此在实际操作中需要确保后端处理跨域问题或者前端与后端在同源下工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值