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

 更新时间:2023年01月16日 16:31:53   作者:简单卟容易  
这篇文章主要为大家介绍了vue pdf二次封装解决无法显示中文问题方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

前言

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封装中文显示的资料请关注脚本之家其它相关文章!

相关文章

  • vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍

    vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍

    vue如何简单的实现弹框,遮罩,点击其他区域关闭弹框, 简单的思路是以一个div作为遮罩,这篇文章给大家详细介绍了vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍,感兴趣的朋友一起看看吧
    2018-09-09
  • vuejs使用递归组件实现树形目录的方法

    vuejs使用递归组件实现树形目录的方法

    本篇文章主要介绍了vuejs使用递归组件实现树形目录的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • vue3中的hooks总结

    vue3中的hooks总结

    这篇文章主要介绍了vue3中的hooks总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • vue实现的上拉加载更多数据/分页功能示例

    vue实现的上拉加载更多数据/分页功能示例

    这篇文章主要介绍了vue实现的上拉加载更多数据/分页功能,涉及基于vue的事件响应、数据交互等相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • Vue系列:通过vue-router如何传递参数示例

    Vue系列:通过vue-router如何传递参数示例

    本篇文章主要介绍了Vue系列:通过vue-router如何传递参数示例,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • Vue生命周期详解

    Vue生命周期详解

    本文详细讲解了Vue的生命周期,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Vue首屏加载过慢的优化方法

    Vue首屏加载过慢的优化方法

    Vue 应用在首屏加载时速度过慢,通常与以下问题有关:打包文件过大、网络请求过多、资源加载过慢,针对这些问题,本文给大家介绍了Vue首屏加载过慢的优化方法,需要的朋友可以参考下
    2025-01-01
  • Vue+Video.js实现视频抽帧并返回抽帧图片Base64

    Vue+Video.js实现视频抽帧并返回抽帧图片Base64

    这篇文章主要为大家详细介绍了Vue如何利用Video.js实现视频抽帧并返回抽帧图片Base64,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2024-01-01
  • 基于Vue 2.0的模块化前端 UI 组件库小结

    基于Vue 2.0的模块化前端 UI 组件库小结

    AT-UI 是一款基于 Vue.js 2.0 的轻量级、模块化前端 UI 组件库,主要用于快速开发 PC 网站产品。下面通过本文给大家介绍Vue 2.0的模块化前端 UI 组件库,需要的朋友参考下吧
    2017-12-12
  • Vue使用vue-cli创建项目

    Vue使用vue-cli创建项目

    这篇文章主要介绍了Vue使用vue-cli创建项目,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09

最新评论