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 文档因字体映射缺失导致的渲染异常问题。

相关推荐
Aliex_git18 分钟前
跨域请求笔记
前端·网络·笔记·学习
37方寸29 分钟前
前端基础知识(Node.js)
前端·node.js
powerfulhell1 小时前
寒假python作业5
java·前端·python
木子啊1 小时前
前端组件化:模板继承拯救发际线
前端
三十_A1 小时前
零基础通过 Vue 3 实现前端视频录制 —— 从原理到实战
前端·vue.js·音视频
前端小菜袅1 小时前
PC端原样显示移动端页面方案
开发语言·前端·javascript·postcss·px-to-viewport·移动端适配pc端
We་ct1 小时前
LeetCode 228. 汇总区间:解题思路+代码详解
前端·算法·leetcode·typescript
爱问问题的小李1 小时前
ue 动态 Key 导致组件无限重置与 API 重复提交
前端·javascript·vue.js
m0_748229991 小时前
PHP+Vue打造实时聊天室
开发语言·vue.js·php
子兮曰1 小时前
深入Vue 3响应式系统:为什么嵌套对象修改后界面不更新?
前端·javascript·vue.js