vue-pdf文件预览踩坑
当时做的时候我就选用了比较简单的vue-pdf插件,因为我觉得pdfjs-dist太复杂,我是不喜欢麻烦的人,然后就有了接下来的坑
1、不显示签名问题:
控制台报:1:Warning: Error during font loading: Failed to execute ‘postMessage’ on ‘Worker’: ArrayBuffer at index 0 is already detached.
2:Warning: Unimplemented widget field type “Sig”, falling back to base field type.
百度查了2,说是把中的
// if ( === 'Sig') {undefined
// _this2.setFlags(_util.); } 这个段给注掉,我去注掉了以后点击预览的时候还是不显示签名,同时控制台还报这两个
然后我就加了 = ({ url: newFlie, CMapReaderFactory }),发现不报1了,也能显示,但是只有第一次
点的时候能显示,我就接着度娘,最后有两种解决办法:
1》在文件中加delete [('./buffer-loader!pdfjs-dist/cmaps/'++'.bcmap')];
return import('./buffer-loader!pdfjs-dist/cmaps/'++'.bcmap' /* webpackChunkName: "noprefetch-[request]" */)
.then(function(bcmap) {
delete [('./buffer-loader!pdfjs-dist/cmaps/'++'.bcmap')];
return {
cMapData: ,
compressionType: ,
};
});
2》 修改 = ({ url: newFlie, CMapReaderFactory })为 = ({
url: newFlie,
cMapUrl: '/npm/pdfjs-dist@2.5.207/cmaps/',
cMapPacked: true
}
2、放大缩小模糊的问题
开始的时候我是想用是transform来实现,结果越放大越模糊:
scale:1,
// 放大
scaleD() {
+= 0.1;
this.$.$ = "scale(" + + ")";
this.$.$ = "top center";
},
scaleX() {
if ( === 1) {
return;
}
+= -0.1;
this.$.$ = "scale(" + + ")";
},
在获取点url地址的时候重定义:
=1
this.$.$ = "scale(1)";
后来就改成了百分比:
scale:100,
scaleD() {
+= 5;
this.$.$ = parseInt() + "%";
},
scaleX() {
if ( === 1) {
return;
}
-= 5;
this.$.$ = parseInt() + "%";
this.$.$ = parseInt() + "%";
},
页面一加载的时候:
= 100;
this.$.$ = parseInt() + "%";
还有我从网上看到说有用iframe标签好像更简洁,功能也很全,但是我用了但是没有出来,不是把文件流直接给url吗,反正就没出来。有大佬用过iframe的文件预览,欢迎指教!