pdf文件预览,有的文件显示空白

时间:2025-02-07 08:24:38

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的文件预览,欢迎指教!