pdf.js 移动端H5 预览PDF文件 IOS不兼容 签章不展示

问题需求

1.需求分析:

1.需要在H5端使用PDF预览
2.显示PDF上的电子签章
3.Android,IOS需要在当前页面展示PDF,同时签章操作

2.问题分析:

1.IOS原生浏览器可以浏览PDF,但是嵌入到 iframe 中会有展示问题
2.Android原生打开PDF会出现下载操作

解决方案

使用的是 pdf.js v2.7.570
插件下载安装地址 下载地址

v2.4.456 版本在IOS中加载不出PDF
v2.7.570 版本可以在IOS展示出PDF,但是不展示签章,处理方式与 v2.4.456 不同

兼容问题

1.跨域问题

文件目录:/web/viewr.js

// 关闭跨域处理
if (origin !== viewerOrigin && protocol !== "blob:") {
  // throw new Error("file origin does not match viewer's");
}

2.电子签章不展示

文件目录:/build/pdf.worker.js

版本: v2.4.456

// 预览盖章合同
if (data.fieldType === "Sig") {
  data.fieldValue = null;
  // this.setFlags(_util.AnnotationFlag.HIDDEN);
}

版本: v2.7.570

// 电子签章注释var AnnotationFactory = faunction () {
	***
	switch (subtype) {
	  case "Link":
	    return new LinkAnnotation(parameters);
	
	  case "Text":
	    return new TextAnnotation(parameters);
	
	  case "Widget":
	    var fieldType = (0, _core_utils.getInheritableProperty)({
	      dict: dict,
	      key: "FT"
	    });
	    fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
	
	    switch (fieldType) {
	      case "Tx":
	        return new TextWidgetAnnotation(parameters);
	
	      case "Btn":
	        return new ButtonWidgetAnnotation(parameters);
	
	      case "Ch":
	        return new ChoiceWidgetAnnotation(parameters);
	    }
	
	    // 电子签章注释
	    (0, _util.warn)('Unimplemented widget field type "' + fieldType + '", ' + "falling back to base field type.");
	    // return new WidgetAnnotation(parameters);
	
	  case "Popup":
	    return new PopupAnnotation(parameters);
	***
} 
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值