vue-pdf預覽pdf文件問題

項目用到pdf預覽,試了pdf-dist和vue-pdf旁趟,總結下來,vue-pdf更好用。
具體文檔https://www.npmjs.com/package/vue-pdf

安裝

npm i vue-pdf

具體用法

<template>
    <div>
        <div id="tools">
            <div class="flex">
                <div class="flex-1" @click="previous">
                    <span class="iconfont fz-24 text-6 tool">&#xe615;</span>
                </div>
                <div class="flex-1" @click="next">
                    <span class="iconfont fz-24 text-6 tool">&#xe616;</span>
                </div>
                <div class="flex-1" @click="scaleD">
                    <span class="iconfont fz-24 text-6 tool">&#xe65d;</span>
                </div>
                <div class="flex-1" @click="scaleX">
                    <span class="iconfont fz-24 text-6 tool">&#xe607;</span>
                </div>
            </div>
        </div>
        <div id="container">
            <pdf :src="pdfSrc" :page="currentPage" :roate="rotate" @progress="onprogress" @num-pages="pageCount = $event" @page-loaded="loadPage" @loaded="loadPdfHandler" @error="loadError" ref="wrapper" class="pdf h-100"></pdf>
        </div>

        <van-overlay :show="showLoading" :z-index="3000">
            <div class="h-100 flex-center">
                <van-loading size="24px" type="spinner" vertical>已加載{{process}}%</van-loading>
            </div>
        </van-overlay>
    </div>
</template>

<script>
import pdf from 'vue-pdf'

export default {
    components: {
        pdf
    },

    data () {
        return {
            currentPage: 1,
            pageCount: 0,
            src: "", // pdf文件地址
            scale: 100, //放大系數
            idx: -1,
            clauseTitle: "",
            loadedRatio: 0,
            rotate: 0,

            showLoading: false,
            process: 0,
            pdfSrc: '',
        }
    },

    created () {
        
    },

    methods: {
        // 改變PDF頁碼,val傳過來區(qū)分上一頁下一頁的值,0上一頁,1下一頁
        changePdfPage(val) {
            if(val === 0 && this.currentPage > 1) {
                this.currentPage--;
            }
            if(val === 1 && this.currentPage < this.pageCount) {
                this.currentPage++;
            }
        },
        goBack() {
            this.$router.go(-1);
        },

        loadPage (e){
            // console.log(e);
        },

        // 上一頁
        previous (){
            if (this.currentPage == 1) return
            this.currentPage -= 1
        },

        // 下一頁
        next (){
            if (this.currentPage == this.pageCount) return
            this.currentPage += 1
        },

        // pdf加載時
        loadPdfHandler(e) {            
            this.currentPage = 1; // 加載的時候先加載第一頁
        },
        onprogress (e){
            // console.log(e);
            this.showLoading = true
            this.process = (e*100).toFixed(0)
            if (e == 1){
                this.showLoading = false
            }
        },

        // 加載失敗
        loadError (e){
            console.log(123);
            
            console.log(e); 
        },

        //放大
        scaleD() {
            this.scale += 5;
            // this.$refs.wrapper.$el.style.transform = "scale(" + this.scale + ")";
            this.$refs.wrapper.$el.style.width = parseInt(this.scale) + "%";
        },

        //縮小
        scaleX() {
            if(this.scale == 100) {
                return;
            }
            this.scale += -5;
            this.$refs.wrapper.$el.style.width = parseInt(this.scale) + "%";
            // this.$refs.wrapper.$el.style.transform = "scale(" + this.scale + ")";
        }
    },

    activated (){
        let pdfurl = this.$route.params.url
        console.log(pdfurl);
        
        
        if (pdfurl){
            this.pdfSrc = decodeURIComponent(pdfurl)
        }else {
            this.$toast('無效的pdf')
            this.$router.go(-1)
        }
    },
}
</script>

<style lang="less" scoped>
#container {
    margin-top: 52px;
    text-align: center;
    overflow: auto;
}

#tools {
    background: white;
    position: fixed;
    z-index: 9;
    width: 100%;
    height: 51px;
    overflow: hidden;
    top: 0;
    left: 0;
    text-align: center;
    border-bottom: 1px solid #eee;

    .tool{
        height: 51px;
        line-height: 51px;
    }
}
</style>

如果pdf中存在電子簽章的話火欧,控制臺會報錯

Warning: Unimplemented widget field type "Sig", falling back to base field type. 
解決辦法,找到node_modules里pdf-dist/build/pdf.worker.js茎截,搜索AnnotationFlag.HIDDEN苇侵,找到類型下面的代碼, 把那行注釋掉即可企锌。
if (data.fieldType === 'Sig') {
      data.fieldValue = null;
      // 此行注釋掉即可
      // _this3.setFlags(_util.AnnotationFlag.HIDDEN);
    }

    return _this3;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末榆浓,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子撕攒,更是在濱河造成了極大的恐慌陡鹃,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抖坪,死亡現場離奇詭異萍鲸,居然都是意外死亡,警方通過查閱死者的電腦和手機擦俐,發(fā)現死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門猿推,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捌肴,你說我怎么就攤上這事蹬叭。” “怎么了状知?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵秽五,是天一觀的道長。 經常有香客問我饥悴,道長坦喘,這世上最難降的妖魔是什么盲再? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮瓣铣,結果婚禮上答朋,老公的妹妹穿的比我還像新娘。我一直安慰自己棠笑,他們只是感情好梦碗,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蓖救,像睡著了一般洪规。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上循捺,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天斩例,我揣著相機與錄音,去河邊找鬼从橘。 笑死念赶,一個胖子當著我的面吹牛,可吹牛的內容都是我干的恰力。 我是一名探鬼主播晶乔,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼牺勾!你這毒婦竟也來了正罢?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤驻民,失蹤者是張志新(化名)和其女友劉穎翻具,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體回还,經...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡裆泳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了柠硕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片工禾。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蝗柔,靈堂內的尸體忽然破棺而出闻葵,到底是詐尸還是另有隱情,我是刑警寧澤癣丧,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布槽畔,位于F島的核電站,受9級特大地震影響胁编,放射性物質發(fā)生泄漏厢钧。R本人自食惡果不足惜鳞尔,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望早直。 院中可真熱鬧寥假,春花似錦、人聲如沸霞扬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祥得。三九已至,卻和暖如春蒋得,著一層夾襖步出監(jiān)牢的瞬間级及,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工额衙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留饮焦,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓窍侧,卻偏偏與公主長得像县踢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子伟件,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內容