使用vue-pdf在线预览pdf
并使得带有电子签章的pdf能够正常预览出来

1.安装vue-pdf

`

npm install vue-pdf
npm install pdfjs-dist

//或者
yarn add vue-pdf
`

2.新建pdf组件

新建AppPdf.vue文件

// AppPdf.vue
<template><div><pdf v-for="i in numPages" :key="i" :page="i" :src="src"></pdf></div>
</template>
<script>import pdf from 'vue-pdf'export default {components:{pdf},props:{pdfSrc: String},data(){return {numPages: null,src: ""}},mounted() {this.getNumPages() // base64pdf 文件的预览this.getNumPages2() // pdf 文件地址的预览},methods:{// #计算pdf页码总数getNumPages() {let CMAP_URL = 'https://unpkg.com/pdfjs-dist@2.0.943/cmaps/'(往下面看【注意】)let perfix64 = 'data:application/pdf;base64,' + this.pdfSrc this.src = pdf.createLoadingTask({url: perfix64,withCredentials: false,cMapUrl: CMAP_URL,cMapPacked: true});this.src.promise.then(pdf => {this.numPages = pdf.numPagesconsole.log(this.numPages)}).catch(err => {console.error('pdf 加载失败', err);})},getNumPages2(){this.src = pdf.createLoadingTask({url: this.pdfSrc,withCredentials: false});this.src.promise.then(pdf => {this.numPages = pdf.numPagesconsole.log(this.numPages)}).catch(err => {console.error('pdf 加载失败', err);})}}}
</script>
3.在父组件的使用
// home.vue
//注:signInfos为从后台获取的pdf文件的json对象
<templete><el-tabs v-model="activeName" @tab-click="handleTabClick"><el-tab-pane label="合同1" name="合同1"><AppPdf :pdfSrc="signInfos.pdf1"></AppPdf></el-tab-pane><el-tab-pane label="合同2" name="合同2"><AppPdf :pdfSrc="signInfos.pdf2"></AppPdf></el-tab-pane></el-tabs>
</templete>
4.解决电子签章无法显示的问题

步骤一

  • node_modules/pdfjs-dist/build/pdf.worker.js注释掉一行代码
if (data.fieldType === "Sig") {data.fieldValue = null;// 注释掉底下这行 就可以显示电子签章// this.setFlags(_util.AnnotationFlag.HIDDEN);
}

步骤二

  • node_modules/pdfjs-dist/es5/build/pdf.worker.js注释掉一行代码
 if (data.fieldType === "Sig") {data.fieldValue = null;// 注释掉底下这行 就可以显示电子签章// _this3.setFlags(_util.AnnotationFlag.HIDDEN);}

最后就可以在页面中看到你想看到的pdf咯

5.注意:

在控制台会出现如下警告⚠️:

Warning: The CMap "baseUrl" parameter must be specified, ensure that the "cMapUrl" and "cMapPacked" API parameters are provided.

当PDF文件中有中文的情况下,在引用pdfjs过程中可能会出现中文不显示问题,在console中会提示如上错误。

主要原因是有pdf不支持的字体格式,可以通过引入pdf.js的字体来解决该问题

解决方法:

let CMAP_URL = 'https://unpkg.com/pdfjs-dist@2.0.943/cmaps/'(往下面看【注意】)
let perfix64 = 'data:application/pdf;base64,' + this.pdfSrc
this.src = pdf.createLoadingTask({url: perfix64,withCredentials: false,cMapUrl: CMAP_URL,cMapPacked: true});

vue-pdf 在线预览pdf(pdf地址或base64pdf)解决电子签章显示问题相关推荐

  1. js 直接打开选择文件窗口_基于HTML5 构建的 Web端现代化PDF在线预览插件——PDF.js...

    引言 PDF文件现在在许多企业中常用 - 无论您是要生成销售报告,交付合同还是发送发票,PDF都是首选的文件类型.PDF.js是由Mozilla编写的JavaScript库.由于它使用vanilla ...

  2. pdf在线预览解决方案——pdf.js使用

    业务背景 在C端的前端项目中,针对用户会有多种规则需要展示,之前的处理方案是将这些规则写成一个个的静态页面,用户来访问这些页面.但如果这些规则需要变更的话,就需要前端修改对应的规则页面的文案,重新发版 ...

  3. java web pdf 打印预览_java原装代码完成pdf在线预览和pdf打印及下载

    前提准备: 1. 项目中至少需要引入的jar包,注意版本: a) core-renderer.jar b) freemarker-2.3.16.jar c) iText-2.0.8.jar d) iT ...

  4. vue 使用 vue-pdf 实现pdf在线预览

    vue 使用 vue-pdf 实现pdf在线预览 1.安装 npm install --save vue-pdf 2.引用 import pdf from 'vue-pdf' export defau ...

  5. html中在线预览pdf文件之pdf在线预览插件

    html中在线预览pdf文件之pdf在线预览插件 最近遇到一个需求,要在html页面查看pdf生成的pdf文件! 翻来覆去找到两种办法 ,最后采用了jquery.media.js插件 方式一 将pdf ...

  6. html做在线预览pdf文件,html中在线预览pdf文件之pdf在线预览插件

    html中在线预览pdf文件之pdf在线预览插件 最近遇到一个需求,要在html页面查看pdf生成的pdf文件! 翻来覆去找到两种办法 ,最后采用了jquery.media.js插件 方式一 将pdf ...

  7. java实现word转pdf在线预览格式

    java实现word转pdf在线预览格式 前段时间的项目里涉及了此功能,调研过一些方案,踩过一些坑,一一总结在此. java转pdf的方案很多,但是很多都要收费,转pdf也有一些格式方面的问题. 方案 ...

  8. html 在线预览pdf功能,html中在线预览pdf文件之pdf在线预览插件

    html中在线预览pdf文件之pdf在线预览插件 最近遇到一个需求,要在html页面查看pdf生成的pdf文件!javascript 翻来覆去找到两种办法 ,最后采用了jquery.media.js插 ...

  9. HTML如何实现PDF在线预览

    在浏览html页面的时候可以实现先预览文件内容再决定是否下载的功能 <html> <title>PDF在线预览</title> <body><em ...

  10. Java实现PDF在线预览

    Java实现PDF在线预览 前言:之前一直PDF一直是下载后再查看,一直在想如何如何在线预览,现已找到方法,作此笔记,也希望都对其他人有所帮助 代码实现 @Slf4j @Controller @Req ...

最新文章

  1. ios 如何改变UISegmentedControl文本的字体大小?
  2. 继承与多态——动手又动脑
  3. 如何做好网络推广中有关网站优化中内链搭建都有什么方法?
  4. html手机端页面meta,手机页面的 HTMLmeta 标签使用与说明
  5. JZOJ__Day 1:【普及模拟】PLES
  6. mysql学习笔记-事务
  7. 动态创建 @ViewChild 导致运行时错误的原因分析
  8. 外媒:科学家首次探测到黑洞吞噬中子星
  9. numpy找到最大值坐标_学习OpenCV convexhull并用numpy实现
  10. grpc 客户端的context 服务端获取不到_MLamp;DEV[10] | gRPC的应用
  11. java.net.BindException: Address already in use解决方法
  12. 森林门前的小路用计算机弹奏歌曲,抖音森林外的小路是什么歌 森林外的小路歌曲介绍...
  13. latex 插图排版
  14. 《Spring5官方文档》新功能
  15. 几何求交(一):直线和直线的交点
  16. 批量创建文件夹并命名的方法
  17. 手游服务器微信互通,使命召唤手游QQ和微信可以一起玩吗
  18. web前端需要学习什么?
  19. 微信开发之使用java获取签名signature
  20. MPG格式(歌曲) 和 MPEG格式的区分

热门文章

  1. (抽奖业务)实现奖池里奖品动态数量来计算概率
  2. 发布订阅模式-前端设计模式
  3. 第一行代码android网课,linux内核分析(网课期末地面课期中)
  4. 残疾人如何考计算机二级证,残联二级残疾证需要什么条件
  5. 希沃展台如何使用_简单又实用的希沃视频展台
  6. CSI数据dat文件转换mat文件问题(matlab、python数据处理)
  7. 程序调用winrar自动压缩文件
  8. Vmware 官网不登录下载vmware workstation pro
  9. android什么控件能够输入多行文字,Android开发:文本控件详解——EditText(一)基本属性...
  10. 【预测模型-ELM预测】基于麻雀算法优化极限学习机预测附matlab代码