当前位置: 代码网 > it编程>前端脚本>Vue.js > vue pdf二次封装解决无法显示中文问题方法详解

vue pdf二次封装解决无法显示中文问题方法详解

2024年05月20日 Vue.js 我要评论
前言vue-pdf 可以实现pdf文件在线预览并且支持分页。安装方式:npm install --save vue-pdf完整代码<template> <el-dialog :

前言

vue-pdf 可以实现pdf文件在线预览并且支持分页。安装方式:npm install --save vue-pdf

完整代码

<template>
    <el-dialog :visible="visible" title="查看pdf" width="1100px" top="2vh" append-to-body @close="handleclose">
        <pdf-viewer 
            v-if="url" 
            style="height: 750px;overflow: auto;"
            :src="url"
            :page="pagedata.currentpage"
            @num-pages="pagedata.total = $event"
            @page-loaded="pagedata.currentpage = $event"
            @loaded="loadpdfhandler()">
        </pdf-viewer>
        <div class="ui-pdf-page" v-if="pagedata.total > 1">
            <span @click="changepdfpage(0)" :class="pagedata.currentpage == 1 ? '' : 'ui-link'">上一页</span>
            <span>{{pagedata.currentpage + '/' + pagedata.total}}</span>
            <span @click="changepdfpage(1)" :class="pagedata.currentpage == pagedata.total ? '' : 'ui-link'">下一页</span>
        </div>
    </el-dialog>
</template>
<script>
    import pdfviewer from 'vue-pdf'
    import cmapreaderfactory from 'vue-pdf/src/cmapreaderfactory.js' //解决中文显示
    export default{
        components: {
            pdfviewer
        },
        name: 'compdfview',
        props: {
            src: {
                type: string,
                default: '',
            },
            visible: {
                type: boolean,
                default: false
            },
        },
        data(){
            return {
                url: '',
                pagedata: {
                    currentpage: 0,
                    total: 0,
                }
            }
        },
        watch:{
            visible(val) {
                if (val) {
                    this.url = pdfviewer.createloadingtask({ url: this.src, cmapreaderfactory });
                }
            }
        },
        methods: {
            handleclose() {
                this.pagedata.currentpage = 1;
                this.$emit('update:visible', false);
            },
            changepdfpage (val) {
                if (val === 0 && this.pagedata.currentpage > 1) {
                    this.pagedata.currentpage--
                }
                if (val === 1 && this.pagedata.currentpage < this.pagedata.total) {
                    this.pagedata.currentpage++
                }
            },
            loadpdfhandler() {
                this.pagedata.currentpage = 1;
            }
        }
    }
</script>
<style scoped lang="less">
    .ui-pdf-page span {
        font-size: 12px;
        padding: 0 20px;
        color: #626879;
    }
    .ui-pdf-page span.ui-link {
        color: #3c8cff;
        cursor: pointer;
    }
</style>

解决无法显示中文问题

关键代码

import pdfviewer from 'vue-pdf'
import cmapreaderfactory from 'vue-pdf/src/cmapreaderfactory.js'
this.url = pdfviewer.createloadingtask({ url: this.src, cmapreaderfactory });

以上就是vue pdf二次封装解决无法显示中文问题方法详解的详细内容,更多关于vue pdf封装中文显示的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com