首页 > 其他分享 >Vue3 pdf.js将二进制文件流转成pdf预览

Vue3 pdf.js将二进制文件流转成pdf预览

时间:2024-07-09 16:59:22浏览次数:14  
标签:文件 res resData value js Vue3 pdf binaryData

好久没写东西,19年之前写过一篇Vue2将pdf二进制文件流转换成pdf文件,如果Vue2换成Vue3了,顺带来一篇文章,pdf.js这个东西用来解决内网pdf预览,是个不错的选择。

首先去pdfjs官网,下载需要的文件

然后将下载的东西放到public文件下

接下来看一下代码

<auto-dialog
    title="PDF预览"
    :visible="visible"
    :appendToBody="true"
    @close="close"
    width="850px"
    id="pdfDialog"
    class="pdfDialog"
  >
    <template #content>
      <div
        class="pdfContent"
        id="pdfContent"
        v-loading="loading"
        element-loading-text="PDF加载中..."
      >
        <iframe v-if="showPdf" id="previewPdf" :src="pdfSrc" height="500px" width="100%"> </iframe>
      </div>
    </template>
  </auto-dialog>
//方法
loading.value = true
  nextTick(async () => {
    let res = await Pdf({ filePath: props.src }).catch(() => {})
    if (res) {
      //实例读取文件对象
      const r = new FileReader()
      r.onload = function () {
        try {
          loading.value = false
          // this.result为FileReader获取blob数据,如果返回报错信息,则是正确的json数据,JSON.parse会正常转换
          //如果返回文件流,则JSON.parse时会报错,走catch代码块(进行正常的文件下载)
          const resData = JSON.parse(this.result)
          //resData是后端返回的json数据
          console.log(resData)

          if (resData.code !== 0) {
            ElMessage({
              message: resData.msg,
              type: "error"
            })
            return
          }
        } catch (error) {
          var binaryData = []
          binaryData.push(res)
          console.log(binaryData, "------------------------+++binaryData1111111111111111")
          let url = window.URL.createObjectURL(
            new Blob(binaryData, {
              type: "application/pdf"
            })
          )

          showPdf.value = true
          loading.value = false
          pdfSrc.value =
            "/pdf/web/viewer.html?file=" +
            encodeURIComponent(url) +
            "&myTime=" +
            new Date().getTime()
        }
      }
      r.readAsText(res)
    }
  })

标签:文件,res,resData,value,js,Vue3,pdf,binaryData
From: https://blog.csdn.net/chenacxz/article/details/139638368

相关文章

  • 推荐一款去除PDF水印的工具:PDF水印去除工具
    PDF水印去除工具是一款针对色差较大的水印进行去除,什么叫色差较大,就是水印的颜色跟你文档的颜色相差很大,这样就非常容易去除。这款软件是由吾爱的@Rongerr使用ChatGPT 4o+ Python开发的,软件是绿色免安装版本。使用方法选择需要去除水印的PDF,点击“选择PDF文件”进行选择......
  • Vue3-slot
    描述      为了能在当前组件中使用其他组件中的内容,并且可以改变其他组件中的内容结构。使用的技术就叫做“插槽”。      在某些场景中,我们可能想要为子组件传递一些模板片段,让子组件在它们的组件中渲染这些片段。举例:子组件<FancyButton/>:<template><butto......
  • Excel表格如何免费转成PDF的3种方法
    很多时候我们会将各种各样的文档转换成pdf的格式,然后发送给别人,因为pdf格式在阅读上既能保持很好的效果,又不会编辑到里面的内容,那么要怎么excel表格转换成pdf呢?方法一:使用Excel软件自带的“另存为”功能大多数版本的MicrosoftExcel都提供了将文档另存为PDF的功能,这是最简单直接......
  • PPT如何转换PDF格式?3种简单方法
    不知道经常需要进行演讲的小伙伴们,你们平时在制作完PPT文稿后,将文稿发送到其它设备上的时候,会不会出现格式错乱的问题呢?如果会的话也不用太过担心,我们只要将PPT文件转换为PDF格式就可以了,PDF格式的兼容性比较好。那你们知道如何将ppt转换成pdf吗?下面为大家介绍几种PPT转换PDF格式......
  • JS随手记录第一天
    JavaScript是Web的编程语言。所有现代的HTML页面都可以使用JavaScript。1.为什么学习JavaScript?JavaScript是web开发人员必须学习的3门语言中的一门:HTML定义了网页的内容CSS描述了网页的布局JavaScript控制了网页的行为JavaScript学习的过程中一起复习之......
  • nuxtjs 2.x.x坑点总结
    1、缩放适配参考:https://blog.csdn.net/weixin_44599931/article/details/136539941坑点:不要用postcss-px2rem,会和nuxt引入公共css冲突,改用postcss-pxtorem可解决2、axios使用坑点:不要配置axios的headers,会导致源代码中seo失效,以及刷新页面后axios请求直接失效3、多环境变......
  • js浅拷贝与深拷贝的区别和实现方式
           ......
  • Shell处理JSON命令行-jq
    jq是一个命令行工具,专门用来处理和转换JSON数据。官网:https://github.com/jqlang/jq安装aptinstalljq基本用法JSON示例文件file.json[{"name":"Alice","age":30},{"name":"Bob","age":35}]#格式化输出jq'.'......
  • 基于java+vue+ssm+jsp的高校后勤报修系统的设计与实现+jsp录像(源码+lw+部署文档+讲解
    前言......
  • K8S学习教程(三):在PetaExpress KubeSphere 容器部署 Wiki 系统 wiki.js 并启用中文全
      背景wiki.js是非常优秀的开源Wiki系统,尽管在与xwiki功能相比,还不算完善,但也在不断进步。常用的功能还是比较实用的,如:Wiki写作、分享、权限管理功能还是非常实用的,UI设计非常的漂亮,精美的界面和直观的操作体验,能够满足小团队的基本知识管理需求。认真阅读......