当前位置: 代码网 > it编程>编程语言>Javascript > 解决vue-pdf的签章不显示问题记录

解决vue-pdf的签章不显示问题记录

2024年11月25日 Javascript 我要评论
在使用vue-pdf @4.3.0时发现上传一般的普通pdf正常预览,但是上传带有红头文件的和和特殊字体的pdf无法正常内容显示,文字丢失问题。1、查看控制台报错信息2、缺少字体原因 getnu

在使用vue-pdf @4.3.0时发现上传一般的普通pdf正常预览,但是上传带有红头文件的和和特殊字体的pdf无法正常内容显示,文字丢失问题。

1、查看控制台报错信息

2、缺少字体原因

    getnumpages(url) {
      var loadingtask = pdf.createloadingtask({
         url: url,
         //引入pdf.js字体
         cmapurl: 'https://cdn.jsdelivr.net/npm/pdfjs-dist@4.8.69/cmaps/',
         cmappacked: true
      });
      this.url = loadingtask;
      loadingtask.promise.then((res) => {
        this.numpages = res.numpages;
      })
    }

3、vue-pdf 是依赖于 pdfjs-dist 库的,而它依赖的pdfjs-dist库的版本不支持显示签章

在 node_modules/pdfjs-dist/es5/build/pdf.worker.js 发现有这么一段代码:

if (data.fieldtype === 'sig') {
  data.fieldvalue = null;
 // _this3.setflags(_util.annotationflag.hidden);
}

其中 _this3.setflags(_util.annotationflag.hidden)就是隐藏电子签章,注释这段代码去修复这个问题了。

4、生产环境同步去修改,用到另一个插件 patch-package 

它的作用就是打补丁, 当某些模块有bug的时候, 先在依赖包修改,在执行以下命令

npm install patch-package
npx patch-package pdfjs-dist

执行后会在项目根目录生成patches文件

同时你也要在 package.json 的脚本scripts中添加 

"scripts": {
    ...
    "postinstall": "patch-package"
 },

后续执行 npm install 时,会自动为依赖包打补丁

5、worker-loader 的默认打包路径是在 dist 根目录下,为了统一我们想把它打包到 dist/static/js 目录下,我们依旧通过更改源码的方式是设置路径。

找到 node_modules/worker-loader/dist/index.js 文件,然后把:

const filename = _loaderutils2.default.interpolatename(this, options.name || '[hash].worker.js', {
    context: options.context || this.rootcontext || this.options.context,
    regexp: options.regexp
});

改为我们想要的路径

const filename = _loaderutils2.default.interpolatename(this, options.name || 'static/js/[hash].worker.js', {
  context: options.context || this.rootcontext || this.options.context,
  regexp: options.regexp
});

最后,再运行 npx patch-package worker-loader,生成worker-loader+2.0.0.patch补丁包

到此这篇关于解决vue-pdf的签章不显示问题的文章就介绍到这了,更多相关vue-pdf签章不显示内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com