问题需求
1.需求分析:
1.需要在H5端使用PDF预览
2.显示PDF上的电子签章
3.Android,IOS需要在当前页面展示PDF,同时签章操作
2.问题分析:
1.IOS原生浏览器可以浏览PDF,但是嵌入到
iframe
中会有展示问题
2.Android原生打开PDF会出现下载操作
解决方案
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);
***
}