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

此时,控制台其实给出了警告提示信息,只不过是用打印的,容易被忽视。
警告:字体加载过程中发生错误:必须指定CMap的“baseUrl”参数,请确保提供了“cMapUrl”和“cMapPacked”API参数。
原因:PDF文档中包含有不支持的字体格式。
解决方法:网上粗略搜了下,可能不同版本配置cMapUrl的方式不同,不容易找到适合自己的,不过在源码中稍加搜索还是可以很快找到的。
我这里控制台输出得到的版本号是1.10.88,解决办法是:在引入完以后,为其cMapUrl赋值即可。
设置完成后,再次刷新页面,可以发现文件已经正常显示了(处理PDF文件时会自动从设置的CMap文件路径中获取所需的字体文件)。

1)官方在github上提供了一些:
2)我在网上搜集了一些:
附注2:cMapPacked的配置网上下载的字体文件有很多可能是带着bcmap后缀的,这意味着它是一个打包的cmap文件,那么在使用时可以将设置为true。这时,在获取字体文件时也会自动增加bcmap后缀。

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

免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系