vue-pdf簡(jiǎn)單用法

1.先下載

cnpm install vue-pdf --save-dev

2.在局部引入,使用

<template>
  <pdf src="./static/relativity.pdf"></pdf>
</template>

<script>
import pdf from 'vue-pdf'

export default {
  components: {
    pdf
  }
}
</script>

例子:可實(shí)現(xiàn)放大縮小,翻頁(yè)功能

<template>
    <div class="all">
        <!-- <Mheader status="useAgreement" class="head" /> -->
        <header>
            <router-link to="/main/mine" slot="left" class="sprites_all sprites_back"></router-link>
            <div class="newbankCard">
                <span class="sprites_all sprites_back" @click="goBack"></span>
                <span class="pf_thick">{{clauseTitle}}</span>
            </div>
        </header>
        <div class="main">
            <!-- {{currentPage}} / {{pageCount}} -->
            <pdf :src="src" :page="currentPage" @progress="loadedRatio = $event" @num-pages="pageCount=$event" @page-loaded="currentPage=$event" @loaded="loadPdfHandler" ref="wrapper" class="pdf"></pdf>
            <!-- <button @click="changePdfPage(1)">+</button> -->
        </div>
        <ul class="footers">
            <li :class="{select:idx==0}" @touchstart="idx=0" @touchend="idx=-1" @click="scaleD">
                <p>放大</p>
            </li>
            <li :class="{select:idx==1}" @touchstart="idx=1" @touchend="idx=-1" @click="scaleX">
                <p>縮小</p>
            </li>
            <li :class="{select:idx==2}" @touchstart="idx=2" @touchend="idx=-1" @click="changePdfPage(0)">
                <p>上一頁(yè)</p>
            </li>
            <li :class="{select:idx==3}" @touchstart="idx=3" @touchend="idx=-1" @click="changePdfPage(1)">
                <p>下一頁(yè)</p>
            </li>
        </ul>

    </div>
</template>

<script>
    import pdf from "vue-pdf";
    import Mheader from "../Mheader";
    export default {
        components: {
            pdf,
            Mheader
        },
        data() {
            return {
                currentPage: 1,
                pageCount: 0,
                src: "", // pdf文件地址
                scale: 100, //放大系數(shù)
                idx: -1,
                clauseTitle: "",
                loadedRatio: 0
            };
        },
        created() {
            // 有時(shí)PDF文件地址會(huì)出現(xiàn)跨域的情況,這里最好處理一下
            let clause = this.$route.query.clause + "";
            switch(clause) {
                case "0":
                    this.src = "../../../../static/clause/A1.pdf";
                    this.clauseTitle = "使用者協(xié)定";
                    break;
                case "1":
                    this.src = "../../../../static/clause/A2.pdf";
                    this.clauseTitle = "私隱政策聲明";
                    break;
                case "2":
                    this.src = "../../../../static/clause/C1.pdf";
                    this.clauseTitle = "產(chǎn)品披露及風(fēng)險(xiǎn)聲明";
                    break;
                case "3":
                    this.src = "../../../../static/clause/C2.pdf";
                    this.clauseTitle = "反洗錢及反恐融資聲明";
                    break;
                case "4":
                    this.src = "../../../../static/clause/C3.pdf";
                    this.clauseTitle = "私隱政策聲明";
                    break;
                case "5":
                    this.src = "../../../../static/clause/C4.pdf";
                    this.clauseTitle = "客戶協(xié)議";
                    break;
                case "6":
                    this.src = "../../../../static/clause/C5.pdf";
                    this.clauseTitle = "使用者協(xié)定";
                    break;
                case "7":
                    this.src = "";
                    this.clauseTitle = "積分計(jì)劃";
                    break;
                default:
                    this.src = "../../../../static/clause/A1.pdf";
            }
            // this.src = pdf.createLoadingTask(this.src);
        },
        methods: {
            // 改變PDF頁(yè)碼,val傳過來區(qū)分上一頁(yè)下一頁(yè)的值,0上一頁(yè),1下一頁(yè)
            changePdfPage(val) {
                if(val === 0 && this.currentPage > 1) {
                    this.currentPage--;
                }
                if(val === 1 && this.currentPage < this.pageCount) {
                    this.currentPage++;
                }
            },
            goBack() {
                this.$router.go(-1);
            },
            // pdf加載時(shí)
            loadPdfHandler(e) {
                this.currentPage = 1; // 加載的時(shí)候先加載第一頁(yè)
            },
            //放大
            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 + ")";
            }
        },
        mounted() {}
    };
</script>
<style lang="scss" scoped>
    @import "../../../assets/css/reset.scss";
    .all {
        padding: 0 0 rem(80);
        header {
            height: rem(88);
            position: sticky;
            top: 0;
            background-color: #fff;
            width: 100%;
            z-index: 400;
            .sprites_all {
                position: absolute;
                left: rem(30);
                top: rem(24);
                display: inline-block;
                width: rem(40);
                height: rem(40);
                background: url("../../../assets/img/transaction/transaction_icon.png") no-repeat;
                background-size: rem(400);
                vertical-align: bottom;
                background-position: 0 rem(-50);
            }
            .sprites_back {
                background-position: rem(-50) 0;
            }
            span {
                line-height: rem(86);
                font-size: rem(30);
                color: $text_3;
                // font-weight: bold;
            }
            border-bottom: 1px solid $line_color;
            .newbankCard {
                border-bottom: 1px solid $line_color;
            }
        }
        .main {
            overflow: auto;
        }
        .head {
            position: fixed;
            top: 0;
            height: rem(88);
        }
        .footers {
            position: fixed;
            bottom: 0;
            width: 100%;
            height: rem(100);
            display: flex;
            z-index: 100;
            color: #333;
            border-top: 1px solid #f0f0f0;
            line-height: rem(80);
            background-color: #fff;
            li {
                text-align: center;
                flex: 1;
                padding: rem(10) 0;
                p {
                    border-right: 1px solid #f0f0f0;
                }
            }
            li:last-child {
                p {
                    border-right: 0 none;
                }
            }
            .select {
                color: #fff;
                background-color: #c59c5a;
                p {
                    border-right: 0 none;
                }
            }
        }
    }
</style>

參考鏈接:https://www.npmjs.com/package/vue-pdf

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.圖片瀏覽控件MWPhotoBrowser 實(shí)現(xiàn)了一個(gè)照片瀏覽器類似 iOS 自帶的相冊(cè)應(yīng)用,可顯示來自手機(jī)的圖...
    萬忍閱讀 1,571評(píng)論 0 6
  • 周末訂了輛車,車是不錯(cuò)的想要的,銷售不好。跟小鴨吐槽銷售的誤導(dǎo)話術(shù),小鴨問我是不是要退車,為啥銷售的錯(cuò)誤要用退車來...
    61大胡子閱讀 176評(píng)論 0 0
  • 1.Bull Horns in Italy 意大利-牛角手勢(shì) North Americans raise thei...
    喜歡太陽(yáng)公公的阿刀啊閱讀 793評(píng)論 0 0
  • KVO的實(shí)現(xiàn)原理: 核心是重寫子類的set方法進(jìn)行監(jiān)聽 具體是:當(dāng)某一個(gè)類在注冊(cè)監(jiān)聽的時(shí)候,系統(tǒng)會(huì)動(dòng)態(tài)(1)創(chuàng)建一...
    賴曉嘉LMT閱讀 322評(píng)論 0 1
  • 姓名: 劉源 公司:臺(tái)州大昌汽車部件有限公司 【日精進(jìn)打卡第16天】 【知-學(xué)習(xí)】 《六項(xiàng)精進(jìn)》讀2遍 《大學(xué)》...
    活著就要感謝閱讀 130評(píng)論 0 0

友情鏈接更多精彩內(nèi)容