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-06
vue雙擊事件2.0事件監(jiān)聽(點擊-雙擊-鼠標(biāo)事件)和事件修飾符操作
這篇文章主要介紹了vue雙擊事件2.0事件監(jiān)聽(點擊-雙擊-鼠標(biāo)事件)和事件修飾符操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
vue中三種插槽(默認(rèn)插槽/具名插槽/作用域插槽)的區(qū)別詳解
默認(rèn)插槽,具名插槽,作用域插槽是vue中常用的三個插槽,這篇文章主要為大家介紹了這三種插槽的使用與區(qū)別,感興趣的小伙伴可以了解一下2023-08-08
vue菜單欄聯(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

