vue-pdf-embed分页预览解决文字丢失问题

解决 PDF 字体加载问题

在 Vue 项目中集成 vue-pdf-embed 组件时,遇到字体加载失败的问题通常是由于缺少字符映射表(CMap)配置。以下是具体解决方案:

配置 CMap 参数 修改 vue-pdf-embedsource 属性,添加 cMapUrlcMapPacked 配置:

javascript 复制代码
<vue-pdf-embed
    v-if="!pdfFail"
    :source="{
        url: getBowserUrl(props.pdfRowData.filePath),
        cMapUrl: 'https://cdn.jsdelivr.net/npm/pdfjs-dist@2.9.359/cmaps/',
        cMapPacked: true
    }"
    @rendered="handleDocumentRender"
    @loading-failed="handlePdfFaid"
/>

关键点说明

  • cMapUrl 需指向包含 PDF.js 字符映射文件的 CDN 地址,路径中的版本号(如 2.9.359)必须与项目中 pdfjs-dist 的实际版本一致。
  • cMapPacked: true 表示使用压缩版的 CMap 文件,提升加载效率。

版本匹配方法 检查 package-lock.jsonyarn.lock 文件,搜索 pdfjs-dist 的版本号,确保 CDN 路径中的版本与之匹配。例如:

json 复制代码
"pdfjs-dist": {
  "version": "2.9.359",
  "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.9.359.tgz"
}

备选方案 若 CDN 加载不稳定,可将 CMap 文件下载到本地,修改 cMapUrl 为本地路径:

javascript 复制代码
cMapUrl: '/assets/cmaps/'  // 假设文件存放在 public/assets/cmaps 目录

通过以上配置,可有效解决 PDF 文档因字体映射缺失导致的渲染异常问题。

相关推荐
满天星辰2 小时前
Typescript的infer到底怎么使用?
前端·typescript
ss2732 小时前
RuoYi-App 本地启动教程
前端·javascript·vue.js
Jolyne_2 小时前
useRef存在的潜在性能问题
前端
用户248257824812 小时前
vue3快速入门
vue.js
炫饭第一名2 小时前
Lottie-web 源码解析(一):从 JSON Schema 认识 Lottie 动画的本质📒
前端·javascript·css
卖火箭的小男孩2 小时前
# Flutter Provider 状态管理精讲(Vue 开发者视角)
前端
前端_yu小白2 小时前
react常用优化手段
前端·javascript·react.js·性能优化·usecallback·usememo
攀登的牵牛花2 小时前
前端向架构突围系列 - 框架设计(六):解析接口职责的单一与隔离
前端·架构
涵涵(互关)2 小时前
JavaScript 对大整数(超过 2^53 - 1)的精度丢失问题
java·javascript·vue.js