最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

前端預(yù)覽pdf文件流詳細步驟

 更新時間:2023年09月28日 09:48:31   作者:valsedefleurs  
公司最近有這么個需求,在線預(yù)覽pdf功能,正好有點時間,稍微整理記錄一下,這篇文章主要給大家介紹了關(guān)于前端預(yù)覽pdf文件流的相關(guān)資料,需要的朋友可以參考下

1. PDF組件選型

通過查找資料,可以找到如下幾種方案,其中最為成熟的方案是vue-pdf

1. iframe 既可以用來瀏覽本地static下的文檔,也可以預(yù)覽后端返回的文件流文檔

2. vue-pdf 較為完善的vue預(yù)覽pdf的方案

3. vueshowpdf 網(wǎng)絡(luò)上找到的一個他人封裝的pdf組件

優(yōu)點

缺點原理

iframe/object/embed

簡單易用,包含了翻頁,打印,縮放等內(nèi)嵌功能無法禁止打印將pdf作為插件內(nèi)嵌再這三個HTML標簽內(nèi)
vueshowpdf樣式簡單清爽,包含翻頁,縮放功能,可以禁止打印在不修改源碼的情況下無法自定義相關(guān)樣式,無進度加載提示,加載完成前會出現(xiàn)白屏基于底層pdf.js實現(xiàn)

vue-pdf

樣式組件可自定義,包含加載進度,翻頁,頁內(nèi)元素可交互等固定寬高的比例,需要將包裹pdf的父容器盡可能調(diào)大才能顯示完全基于pdf.js實現(xiàn)

總結(jié)下來,

  • 如果只想 簡單在頁面嵌套PDF,使用iframe/object/embed是最好的選擇,它不需要你自己去編寫翻頁組件,不需要去調(diào)整樣式,用戶體驗佳。
  • 如果對 樣式?jīng)]有定制化  的需求,使用 vueshowpdf 也是非常不錯,彈窗式的UI看起來會更加高大上。
  • 如果對 權(quán)限控制,樣式定制需求高,使用 vue-pdf 是最好的選擇,接口和屬性較全,擴展能力強,自由度高。

2. Iframe使用步驟

2.1 使用與邏輯

邏輯:將后端返回的看不懂的文件流,設(shè)置成reponseType="arraybuffer",然后讀取到返回的blob,再使用createObjectURL讀取出url即可

2.2 代碼示例

<template>
    <iframe :src="src" frameborder="0" :style="iframeStyle" />
</template>
<script>
import { mapState } from 'vuex'
import { getNodeObjectData } from '@/modules/viewer/apis/service'
export default {
    name: 'pdfPanel',
    props: {
        node: {
            type: Object,
            default: () => {}
        }
    },
    data() {
        return {
            src: ''
        }
    },
    computed: {
        ...mapState({
            innerHeight: (state) => state.viewerStore.setting['innerHeight']
        }),
        iframeStyle() {
            return {
                width: '100%',
                height: `${this.innerHeight - 130}px`
            }
        }
    },
    mounted() {
        return getNodeObjectData({
            meta_id: this.node.id
        })
        .then((res) => {
            const blob = new Blob([res], { type: 'application/pdf' })
            const url = window.URL.createObjectURL(blob)
            this.src = url
        })
    },
    methods: {
        handleFullScreen() {
            window.open(`${this.src}#filename=${this.node.name}`, "_blank")
        }
    }
}
</script>>

2.3 圖文詳解

1. 后端返回的是文件流,如下:

2. 接口請求設(shè)置responseType="arraybuffer"

export function getNodeObjectData(params) {
    return axios({
        url: `${apiPrefix}/pdf`,
        method: 'GET',
        params: params,
        responseType: 'arraybuffer'
    })
}

總結(jié) 

到此這篇關(guān)于前端預(yù)覽pdf文件流的文章就介紹到這了,更多相關(guān)前端預(yù)覽pdf文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用nodeJS+vue圖片上傳實現(xiàn)更新頭像的過程

    利用nodeJS+vue圖片上傳實現(xiàn)更新頭像的過程

    Vue是一套構(gòu)建用戶界面的框架,最近工作中遇到了一個需求,需要做一個更新頭像的通能,下面這篇文章主要給大家介紹了關(guān)于利用nodeJS+vue圖片上傳的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • vue內(nèi)點擊url下載文件的最佳解決方案分享

    vue內(nèi)點擊url下載文件的最佳解決方案分享

    這篇文章主要給大家介紹了關(guān)于vue內(nèi)點擊url下載文件的最佳解決方案,文中通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-02-02
  • vue項目頁面嵌入代碼塊vue-prism-editor的實現(xiàn)

    vue項目頁面嵌入代碼塊vue-prism-editor的實現(xiàn)

    這篇文章主要介紹了vue項目頁面嵌入代碼塊vue-prism-editor的實現(xiàn),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • vue+ElementUI更像Excel的表格組件使用詳解

    vue+ElementUI更像Excel的表格組件使用詳解

    這篇文章主要介紹了如何在前端處理表格數(shù)據(jù)并展示在Element?UI的el-table組件中,核心思想是先構(gòu)建表頭和第一列,然后根據(jù)表頭和第一行的數(shù)據(jù)填充表格內(nèi)容
    2025-12-12
  • vue如何判斷組件進入可視區(qū)域

    vue如何判斷組件進入可視區(qū)域

    這篇文章主要介紹了vue如何判斷組件進入可視區(qū)域問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue項目引入ts步驟(小結(jié))

    vue項目引入ts步驟(小結(jié))

    這篇文章主要介紹了vue項目引入ts步驟(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • vuex 如何動態(tài)引入 store modules

    vuex 如何動態(tài)引入 store modules

    這篇文章主要介紹了vuex 如何動態(tài)引入 store modules,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vue做網(wǎng)頁開場視頻的實例代碼

    vue做網(wǎng)頁開場視頻的實例代碼

    這篇文章主要介紹了vue做網(wǎng)頁開場視頻的實例代碼,需要的朋友可以參考下
    2017-10-10
  • Vue+ElementUI實現(xiàn)動態(tài)更換任意主題色(動態(tài)換膚)的全過程

    Vue+ElementUI實現(xiàn)動態(tài)更換任意主題色(動態(tài)換膚)的全過程

    眾所周知Element-UI有換膚功能,下面這篇文章主要給大家介紹了關(guān)于Vue+ElementUI實現(xiàn)動態(tài)更換任意主題色(動態(tài)換膚)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • vue-cli3在main.js中console.log()會報錯的解決

    vue-cli3在main.js中console.log()會報錯的解決

    這篇文章主要介紹了vue-cli3在main.js中console.log()會報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04

最新評論

乐清市| 合川市| 灌阳县| 赤水市| 江川县| 建瓯市| 宁陕县| 泽普县| 台东市| 古浪县| 略阳县| 司法| 阿拉善盟| 高雄市| 西乌珠穆沁旗| 福州市| 林甸县| 建瓯市| 新闻| 泸水县| 泾源县| 武义县| 吉安市| 普安县| 潢川县| 乌兰察布市| 蕲春县| 峡江县| 抚松县| 铁岭县| 湖州市| 河北区| 墨玉县| 中超| 黑龙江省| 莎车县| 靖江市| 揭西县| 鸡泽县| 涞水县| 阿克|