Vue实现PDF文件预览的方法详解

 更新时间:2023年09月26日 09:51:48   作者:fby  
pdf文件预览是开发业务时常见的一个交互,在toB项目中是经常用到的,对于用户上传文件,预览文件等操作时有一个更好的体验,下面我结合实际业务,在vue的基础上与大家分享这个实现方法,需要的朋友可以参考下

一.安装vue-pdf和vue-pdf-embed这两个库

在业务组件中导入

   import pdf from "vue-pdf";
   import VuePdfEmbed from "vue-pdf-embed";

二.在上传文件组件的文件列表处绑定预览方法

        <Upload.Dragger
          style="position: relative; width: 80%; cursor: pointer"
          :maxCount="1"
          :beforeUpload="beforeUpload"
          accept=".pdf"
          @remove="removeFile"
          @preview="getNumPages" //预览文件
        >
          <div>
            <p class="ant-upload-drag-icon">
              <CloudUploadOutlined />
            </p>
            <p class="ant-upload-text">点击或将文件拖拽到此处</p>
            <p class="ant-upload-hint">支持pdf类型的文件</p>
          </div>
        </Upload.Dragger>
      </Form.Item>

1.在beforeUpload方法中获取文件的url

const beforeUpload = async (file: FileType) => {
  //获取文件的url格式
  pdfSrc.value = URL.createObjectURL(file);
  if (file.size / 1024 / 1024 > 50) {
    message.error("文件大小不可超过50MB");
    return Upload.LIST_IGNORE;
  }
  if (filename !== ".pdf") {
    message.warn("请选择指定的文件格式");
    return;
  }
  return false;
};

2.实现预览方法

const getNumPages = () => {
  //创建加载任务
  let loadingTask = pdf.createLoadingTask(pdfSrc.value);
  loadingTask.promise
    .then((pdf: any) => {
     //获取pdf的页数
      numPages.value = pdf.numPages;
    })
    .catch((err: any) => {
      console.error("pdf 加载失败", err);
    });
  pv.value = true;
};

三.在弹窗中加载预览窗口

<Modal v-model:visible="pv" :width="700">
    <div v-if="pv">
      <VuePdfEmbed
        v-for="item in numPages"
        :key="item"
        :source="pdfSrc"
        class="vue-pdf-embed"
        :page="item"
        style="1"
      >
      </VuePdfEmbed>
    </div>
  </Modal>

效果图

以上就是Vue实现PDF文件预览的方法详解的详细内容,更多关于Vue实现PDF文件预览的资料请关注脚本之家其它相关文章!

相关文章

  • 解决Vue-cli npm run build生产环境打包,本地不能打开的问题

    解决Vue-cli npm run build生产环境打包,本地不能打开的问题

    今天小编就为大家分享一篇解决Vue-cli npm run build生产环境打包,本地不能打开的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • vue parseHTML函数源码解析start钩子函数

    vue parseHTML函数源码解析start钩子函数

    这篇文章主要为大家介绍了vue parseHTML函数源码解析start钩子函数,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 基于Vue3文件拖拽上传功能实现

    基于Vue3文件拖拽上传功能实现

    这篇文章主要介绍了Vue3文件拖拽上传功能,支持拖拽到此区域上传,支持选择多个文件/文件夹,代码很简单,对vue3拖拽上传功能感兴趣的朋友一起看看吧
    2022-10-10
  • Vue3中插槽(slot)用法汇总(推荐)

    Vue3中插槽(slot)用法汇总(推荐)

    这篇文章主要介绍了Vue3中插槽(slot)用法汇总,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • elementUI样式修改未生效问题详解(挂载到了body标签上)

    elementUI样式修改未生效问题详解(挂载到了body标签上)

    vue+elementUI项目开发中,经常遇到修改elementUI组件样式无效的问题,这篇文章主要给大家介绍了关于elementUI样式修改未生效问题的相关资料,挂载到了body标签上,需要的朋友可以参考下
    2023-04-04
  • Vue使用mixin分发组件的可复用功能

    Vue使用mixin分发组件的可复用功能

    这篇文章主要介绍了Vue使用mixin分发组件的可复用功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • vue 使用eventBus实现同级组件的通讯

    vue 使用eventBus实现同级组件的通讯

    这篇文章主要介绍了vue 使用eventBus实现同级组件的通讯,需要的朋友可以参考下
    2018-03-03
  • 让Vue也可以使用Redux的方法

    让Vue也可以使用Redux的方法

    这篇文章主要介绍了让Vue也可以使用Redux的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Vue入门之数据绑定(小结)

    Vue入门之数据绑定(小结)

    本篇文章主要介绍了探索Vue高阶组件的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • vue之webpack -v报错解决方案总结

    vue之webpack -v报错解决方案总结

    这篇文章主要介绍了vue之webpack -v报错解决方案总结,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09

最新评论