Vue實現(xiàn)PDF文件預(yù)覽的方法詳解
更新時間:2023年09月26日 09:51:48 作者:fby
pdf文件預(yù)覽是開發(fā)業(yè)務(wù)時常見的一個交互,在toB項目中是經(jīng)常用到的,對于用戶上傳文件,預(yù)覽文件等操作時有一個更好的體驗,下面我結(jié)合實際業(yè)務(wù),在vue的基礎(chǔ)上與大家分享這個實現(xiàn)方法,需要的朋友可以參考下
一.安裝vue-pdf和vue-pdf-embed這兩個庫
在業(yè)務(wù)組件中導(dǎo)入
import pdf from "vue-pdf"; import VuePdfEmbed from "vue-pdf-embed";
二.在上傳文件組件的文件列表處綁定預(yù)覽方法
<Upload.Dragger style="position: relative; width: 80%; cursor: pointer" :maxCount="1" :beforeUpload="beforeUpload" accept=".pdf" @remove="removeFile" @preview="getNumPages" //預(yù)覽文件 > <div> <p class="ant-upload-drag-icon"> <CloudUploadOutlined /> </p> <p class="ant-upload-text">點擊或?qū)⑽募献У酱颂?lt;/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.實現(xiàn)預(yù)覽方法
const getNumPages = () => { //創(chuàng)建加載任務(wù) let loadingTask = pdf.createLoadingTask(pdfSrc.value); loadingTask.promise .then((pdf: any) => { //獲取pdf的頁數(shù) numPages.value = pdf.numPages; }) .catch((err: any) => { console.error("pdf 加載失敗", err); }); pv.value = true; };
三.在彈窗中加載預(yù)覽窗口
<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實現(xiàn)PDF文件預(yù)覽的方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Vue實現(xiàn)PDF文件預(yù)覽的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
v-show和v-if的區(qū)別?及應(yīng)用場景
這篇文章主要介紹了v-show和v-if的區(qū)別及應(yīng)用場景,vue中v-show與?v-if的作用效果是相同的,都能控制元素在頁面是否顯示,但是也有一定的區(qū)別,下面文章梳理總結(jié)v-show和v-if的區(qū)別,需要的小伙伴可以參考一下2022-06-06vue雙擊事件2.0事件監(jiān)聽(點擊-雙擊-鼠標(biāo)事件)和事件修飾符操作
這篇文章主要介紹了vue雙擊事件2.0事件監(jiān)聽(點擊-雙擊-鼠標(biāo)事件)和事件修飾符操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07vue中三種插槽(默認(rèn)插槽/具名插槽/作用域插槽)的區(qū)別詳解
默認(rèn)插槽,具名插槽,作用域插槽是vue中常用的三個插槽,這篇文章主要為大家介紹了這三種插槽的使用與區(qū)別,感興趣的小伙伴可以了解一下2023-08-08vue菜單欄聯(lián)動內(nèi)容頁面tab的實現(xiàn)示例
本文主要介紹了vue菜單欄聯(lián)動內(nèi)容頁面tab的實現(xiàn)示例,左側(cè)菜單欄與右側(cè)內(nèi)容部分聯(lián)動,當(dāng)點擊左側(cè)的菜單,右側(cè)會展示對應(yīng)的tab,具有一定的參考價值,感興趣的可以了解一下2024-01-01