请求pdf文件流并进行预览

最近做了一个需求就是预览pdf等文件,不过后端返回的是一个文件流,需要前端做一定地处理才行。

我们来看一下具体的实现方式。预览pdf的插件使用的是pdf.js,具体请看这篇文章:pdf.js插件怎么控制工具栏的显示与隐藏

1、请求pdf文件流数据

先看一下请求pdf文件流的请求接口

javascript 复制代码
getPdfStream(id,data,responseType = 'blob'){
   return request.get('/api/business/getPdfStream/'+id,{params:{...data},responseType:responseType})
}
2、把请求回来的文件流数据转化为url
javascript 复制代码
<template>
   <div>
     <iframe
        allowfullscreen="true"
        :src="contentUrl"
        frameborder="0"
        width="100%"
        height="1200px"
     ></iframe>
   </div>
</template>
<script setup>	
import {onMounted,ref} from 'vue'
let contentUrl = ref("")
let fileId = new URLSearchParams(location.hash.split("previewPdf?")[1]);
onMounted(()=>{
   getPdfContent(fileId)
})

// 获取pdf内容
function getPdfContent(fileId) {
   API.getPdfStream(fileId).then(res=>{
      // 这一步是关键,使用window.URL.createObjectURL把blob数据转为本地URL
      let url = window.URL.createObjectURL(new Blob([res.data]));
      
      contentUrl.value = `static/pdfjs/web/viewer.html?file=${url}`
   })
}
</script>
相关推荐
诸葛大钢铁17 小时前
如何拆分PDF文件?快速拆分PDF文件的2个方法
pdf·pdf拆分
CodeCraft Studio20 小时前
国产化PDF处理控件Spire.PDF教程:在Java快速解析PDF文本、表格、图像和元数据
java·python·pdf·pdf解析·spire.pdf·元数据解析·java pdf解析
计算机视觉-Archer20 小时前
【免费pdf加水印】Adobe Acrobat PDF
pdf
程序员哈基耄2 天前
本地化PDF工具箱:安全、高效的文档处理解决方案
安全·pdf
qq_451119552 天前
visio 导出pdf无边框无空白边距
pdf
yesyesido2 天前
PDF全能处理平台:高效压缩、精准拆分与智能合并的一站式解决方案
pdf
优选资源分享2 天前
CubePDF Page v5.1.4 | 高效 PDF 合并拆分工具
pdf
浩浩的科研笔记2 天前
投论文常用技术笔记-使用visio导出贴合图像尺寸大小的PDF(无白边、无黑框)
笔记·pdf·论文笔记
m5655bj2 天前
如何通过 C# 将 Markdown 转换为 PDF 文档
开发语言·pdf·c#
stereohomology2 天前
解决某些Typora主题导出PDF分页拦腰截断文字或图片等问题的方法
pdf