码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 关于pdf.js获取不到文本的问题


            在使用pdf.js获取PDF文本时,发现有部分文件获取不到文本(另:vue-pdf依赖于pdf.js,所以也会出现这个问题)。

            此时,控制台其实给出了警告提示信息,只不过是用console.log打印的,容易被忽视。

    Warning: Error during font loading: CMap baseUrl must be specified, see "PDFJS.cMapUrl" (and also "PDFJS.cMapPacked").

            警告:字体加载过程中发生错误:必须指定CMap的“baseUrl”参数,请确保提供了“cMapUrl”和“cMapPacked”API参数。

            原因:PDF文档中包含有pdf.js不支持的字体格式。

            解决方法:网上粗略搜了下,可能不同版本配置cMapUrl的方式不同,不容易找到适合自己的,不过在源码中稍加搜索还是可以很快找到的。

            我这里控制台输出PDFJS.version得到的版本号是1.10.88,解决办法是:在引入完pdf.js以后,为其cMapUrl赋值即可。

    PDFJS.cMapUrl='/lib/CMap/'; // CMap文件路径

            设置完成后,再次刷新页面,可以发现文件已经正常显示了(pdf.js处理PDF文件时会自动从设置的CMap文件路径中获取所需的字体文件)。

          附注1:字体文件的获取

            1)官方在github上提供了一些:https://github.com/adobe-type-tools/cmap-resources

            2)我在网上搜集了一些:https://download.csdn.net/download/xueshen1106/89220133

          附注2:cMapPacked的配置

            网上下载的字体文件有很多可能是带着bcmap后缀的,这意味着它是一个打包的cmap文件,那么在使用时可以将 PDFJS.cMapPacked 设置为 true。这时,pdf.js在获取字体文件时也会自动增加bcmap后缀。

            但这里有个需要注意的地方:如果直接将带bcmap后缀的文件去掉后缀(同时不设置cMapPacked),这时字体文件仍然可以正常加载使用;但如果是将未打包的字体文件直接人为添加bcmap后缀(同时cMapPacked设置为true),经测试,这样字体文件不能被正确使用,是获取不到PDF文本的。

            最后,对比下同一个字体打包和不打包的内容差异:

  • 相关阅读:
    mlr3实现二分类资料多个模型评价和比较
    leetcode 3. 无重复字符的最长子串
    qt listwidget获取当前选中项
    Quicker快速开发,简单的网页数据爬取(示例,获取天眼查指定公司基础工商数据)
    双-(二苯胺基-苯基)-苯并[c]硫代咪唑聚集诱导发光微球/四苯基乙烯聚集诱导发光AIE微球
    万字肝完nodejs入门教程,详解入口,建议收藏(更新中)
    [附源码]Python计算机毕业设计Django基于Web的绿色环保网站
    Kubernetes 的服务网格
    根据多个乱序经纬度计算多边形顶点顺序并绘制到指定地图上
    RS&FSW测试脚本
  • 原文地址:https://blog.csdn.net/xueshen1106/article/details/138183338
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号