1 Star 1 Fork 8

张德政 / vue_basic

forked from xxll / vue_basic 
 / 详情

vue-pdf插件中文乱码问题,粗略的解决方案

待办的
拥有者
创建于  
2021-07-30 15:47

vue-pdf无法显示中文的解决方案

https://blog.csdn.net/PokoMobula/article/details/103164795

解决方案也比较简单,在项目中引入“CMapReaderFactory.js”,引入方式如下:

import CMapReaderFactory from 'vue-pdf/src/CMapReaderFactory.js'

然后修改pdf链接的createLoadingTask方法,例如:

this.pdfUrl = pdf.createLoadingTask({ url: data.url, CMapReaderFactory })

修改后就可以正常展示中文了
————————————————
版权声明:本文为CSDN博主「PokoMobula」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/PokoMobula/article/details/103164795

效果图

输入图片说明

源码

<template>
<div class="pdf">
  <div class="pdf-tab">
    <div class="top-pdf">
      <div
        class="bnt-pdf"
        @click.stop="prePage">上一页</div>
      <div
        class="bnt-pdf"
        @click.stop="nextPage">下一页</div>
    </div>
    <pdf
      ref="pdf"
      class="bottom-pdf"
      :src="pdfUrl"
      :page="pageNum"
      :rotate="pageRotate"
      @password="password"
      @progress="loadedRatio = $event"
      @page-loaded="pageLoaded($event)"
      @num-pages="pageTotalNum=$event"
      @error="pdfError($event)"
      @link-clicked="page = $event">
    </pdf>
<!--    <div
      class="btn-def"
      @click.stop="clock">顺时针</div>
    <div
      class="btn-def"
      @click.stop="counterClock">逆时针</div> -->
<!--    <div
      class="btn-def"
      @click.stop="pdfPrintAll">全部打印</div>
    <div
      class="btn-def"
      @click.stop="pdfPrint">部分打印</div>
    </div>
    <div>{{pageNum}}/{{pageTotalNum}}</div>
    <div>进度:{{loadedRatio}}</div>
    <div>页面加载成功: {{curPageNum}}</div> -->
  </div>
</div>
</template>
<script>
import pdf from 'vue-pdf'
import CMapReaderFactory from 'vue-pdf/src/CMapReaderFactory.js'

export default {
  name: 'Pdf',
  components: {
    pdf
  },
  props: {
    url: {
      type: String,
      default: 'https://doc.app.ftmainchain.com/uploadfile/docs/FT--1624443348214-15284873.pdf'
    }
  },
  data () {
    return {
      // pdfUrl: 'https://doc.app.ftmainchain.com/uploadfile/docs/FT--1624443348214-15284873.pdf',
      pdfUrl: null,
      pageNum: 1,
      pageTotalNum: 1,
      pageRotate: 0,
      // 加载进度
      loadedRatio: 0,
      curPageNum: 0
    }
  },
  mounted: function () {
  },
  created: function () {
    // this.pdfUrl = pdf.createLoadingTask({
    //   url: 'https://doc.app.ftmainchain.com/uploadfile/docs/FT--1624443348214-15284873.pdf',
    //   cMapUrl: '../../../../static/cmaps/',
    //   cMapPacked: true
    // })
    this.pdfUrl = pdf.createLoadingTask({
      // url: 'https://doc.app.ftmainchain.com/uploadfile/docs/FT--1624443348214-15284873.pdf',
      url: this.url,
      CMapReaderFactory
    })
  },
  methods: {
    prePage () {
      var p = this.pageNum
      p = p > 1 ? p - 1 : this.pageTotalNum
      this.pageNum = p
    },
    nextPage () {
      console.log('nextpage')
      var p = this.pageNum
      p = p < this.pageTotalNum ? p + 1 : 1
      this.pageNum = p
    },
    clock () {
      this.pageRotate += 90
    },
    counterClock () {
      this.pageRotate -= 90
    },
    password (updatePassword, reason) {
      updatePassword(prompt('password is "123456"'))
      console.log('...reason...')
      console.log(reason)
      console.log('...reason...')
    },
    pageLoaded (e) {
      this.curPageNum = e
    },
    pdfError (error) {
      console.error(error)
    },
    pdfPrintAll () {
      this.$refs.pdf.print()
    },
    pdfPrint () {
      this.$refs.pdf.print(100, [1, 2])
    }
  }
}
</script>

<style>
/*  /deep/.bottom-pdf{
    height: 300px;
  } */
/*  .top-pdf{
    height: 300px;
  } */
 /* /deep/ canvas{
    width: 50%;
  } */
  .top-pdf{
    display: flex;
    width: 100%;
    justify-content: center;
  }
  .bottom-pdf{
    margin: 0 auto;
  }
  .bnt-pdf:hover{
    cursor: pointer;
    opacity: 0.7;
  }
  .bnt-pdf{
    border: 1px solid #666666;
    width: 100px;
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 5px;
  }
 .bottom-pdf{
    width: 50%;
  }
  .annotationLayer{
    transform: scale(1) !important;
  }
</style>

评论 (1)

张德政 创建了任务
张德政 关联仓库设置为张德政/vue_basic
张德政 负责人设置为张德政
张德政 优先级设置为严重
展开全部操作日志
张德政 添加了
 
question
标签
张德政 修改了描述

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(1)
7484906 zhang dezheng hsr 1646372921
1
https://gitee.com/zhang_dezheng_hsr/vue_basic.git
git@gitee.com:zhang_dezheng_hsr/vue_basic.git
zhang_dezheng_hsr
vue_basic
vue_basic

搜索帮助