1、部分中文不显示或乱码问题,报错如下
Warning: Error during font loading: The CMap "baseUrl" parameter must be specified, ensure that the "cMapUrl" and "cMapPacked" API parameters are provided.
解决方案:
import CMapReaderFactory from 'vue-pdf/src/CMapReaderFactory.js
this.pdfUrl = pdf.createLoadingTask({ url: pdfUrl, CMapReaderFactory })
2、上述解决方案后,二次加载会有另一个错误,报错如下:
Warning: Error during font loading: Failed to execute 'postMessage' on 'Worker': ArrayBuffer at index 0 is already detached.
解决方案:
原因其实是CMapReaderFactory 对象动态import语言文件的时候缓存了文件,导致第二次取缓存加载时出了问题,把CMapReaderFactory.js的代码改成这样就行了:
`
var bcmapName = './buffer-loader!pdfjs-dist/cmaps/'+query.name+'.bcmap';
return import(bcmapName).then(function(bcmap) {
//移除缓存的文件
delete require.cache[require.resolve(bcmapName)];
return {
cMapData: bcmap.default,
compressionType: CMapCompressionType.BINARY,
};
});
`
由于这是第三方文件,改不太方便,不利于后续维护,可使用vue-pdf-signature,或者自己fork vue-pdf来改造。
参考文章: vue-pdf踩坑指南_快进小树林的博客-优快云博客