From da531a9f71f8cd358d9d9be120aa09da5966568b Mon Sep 17 00:00:00 2001 From: Jared Stoffan Date: Wed, 28 Aug 2019 18:26:39 -0700 Subject: [PATCH] fix(pdf): Re-enable support for unverified signatures in PDF files (#1059) --- build/upgrade_pdfjs.sh | 8 +--- src/third-party/doc/2.16.0/pdf.worker.js | 2 +- src/third-party/doc/2.16.0/pdf.worker.min.js | 48 ++++++++++---------- 3 files changed, 26 insertions(+), 32 deletions(-) diff --git a/build/upgrade_pdfjs.sh b/build/upgrade_pdfjs.sh index 6f0e76efe..5f133b314 100755 --- a/build/upgrade_pdfjs.sh +++ b/build/upgrade_pdfjs.sh @@ -33,12 +33,6 @@ echo "-------------------------------------------------------------------------- \cp -rf pdfjs-dist/cmaps/* src/third-party/doc/${DOC_STATIC_ASSETS_VERSION}/cmaps/ rm -rf ./pdfjs-dist/ -# Fix Chrome console warning issue by not testing for moz-chunked-arraybuffer support in Chrome -echo "-----------------------------------------------------------------------------------" -echo "Tweaking pdf.js for Chrome..." -echo "-----------------------------------------------------------------------------------" -sed -e 's/function supportsMozChunkedClosure/!\(\/Chrome\/\.test\(navigator\.userAgent\)\) \&\& function supportsMozChunkedClosure/' -i '' src/third-party/doc/${DOC_STATIC_ASSETS_VERSION}/pdf.js - # Decreased default cached pages size to 5 on mobile web to lower memory usage echo "-----------------------------------------------------------------------------------" echo "Decreasing # of cached pages on mobile web..." @@ -49,7 +43,7 @@ sed -e 's@var DEFAULT_CACHE_SIZE = 10;@var DEFAULT_CACHE_SIZE = /iphone|ipad|ipo echo "-----------------------------------------------------------------------------------" echo "Enabling e-signature rendering without validation..." echo "-----------------------------------------------------------------------------------" -sed -e 's@_this2.setFlags(_util.AnnotationFlag.HIDDEN);@\/\/_this2.setFlags(_util.AnnotationFlag.HIDDEN);@' -i '' src/third-party/doc/${DOC_STATIC_ASSETS_VERSION}/pdf.worker.js +sed -e 's@_this3.setFlags(_util.AnnotationFlag.HIDDEN);@\/\/_this3.setFlags(_util.AnnotationFlag.HIDDEN);@' -i '' src/third-party/doc/${DOC_STATIC_ASSETS_VERSION}/pdf.worker.js # Miniy the libraries ./build/minify_pdfjs.sh diff --git a/src/third-party/doc/2.16.0/pdf.worker.js b/src/third-party/doc/2.16.0/pdf.worker.js index a289099a7..cf06662a9 100644 --- a/src/third-party/doc/2.16.0/pdf.worker.js +++ b/src/third-party/doc/2.16.0/pdf.worker.js @@ -28995,7 +28995,7 @@ function (_Annotation2) { if (data.fieldType === 'Sig') { data.fieldValue = null; - _this3.setFlags(_util.AnnotationFlag.HIDDEN); + // _this3.setFlags(_util.AnnotationFlag.HIDDEN); } return _this3; diff --git a/src/third-party/doc/2.16.0/pdf.worker.min.js b/src/third-party/doc/2.16.0/pdf.worker.min.js index 812cc7ccc..78be471e0 100644 --- a/src/third-party/doc/2.16.0/pdf.worker.min.js +++ b/src/third-party/doc/2.16.0/pdf.worker.min.js @@ -710,30 +710,30 @@ arguments[1]:[0,0,0,0];if((0,d.isName)(a))this.width=0;else if(Number.isInteger( f.AnnotationBorderStyleType.INSET;break;case "U":this.style=f.AnnotationBorderStyleType.UNDERLINE}}},{key:"setDashArray",value:function(a){if(Array.isArray(a)&&0h.fieldFlags)h.fieldFlags=0;h.readOnly=c.hasFieldFlag(f.AnnotationFieldFlag.READONLY);"Sig"===h.fieldType&&(h.fieldValue=null,c.setFlags(f.AnnotationFlag.HIDDEN));return c}F(e,c);u(e,[{key:"_constructFieldName",value:function(a){if(!a.has("T")&&!a.has("Parent"))return(0,f.warn)("Unknown field name, falling back to empty field name."),"";if(!a.has("Parent"))return(0,f.stringToPDFString)(a.get("T"));var b= -[];for(a.has("T")&&b.unshift((0,f.stringToPDFString)(a.get("T")));a.has("Parent");){a=a.get("Parent");if(!(0,d.isDict)(a))break;a.has("T")&&b.unshift((0,f.stringToPDFString)(a.get("T")))}return b.join(".")}},{key:"hasFieldFlag",value:function(a){return!!(this.data.fieldFlags&a)}},{key:"getOperatorList",value:function(b,c,d){return d?Promise.resolve(new H.OperatorList):a(l(e.prototype),"getOperatorList",this).call(this,b,c,d)}}]);return e}(h),N=function(c){function d(a){n(this,d);var c=b(this,l(d).call(this, -a));a=a.dict;c.data.fieldValue=(0,f.stringToPDFString)(c.data.fieldValue||"");var e=(0,G.getInheritableProperty)({dict:a,key:"Q"});if(!Number.isInteger(e)||0>e||2a)a=null;c.data.maxLen=a;c.data.multiLine=c.hasFieldFlag(f.AnnotationFieldFlag.MULTILINE);c.data.comb=c.hasFieldFlag(f.AnnotationFieldFlag.COMB)&&!c.hasFieldFlag(f.AnnotationFieldFlag.MULTILINE)&&!c.hasFieldFlag(f.AnnotationFieldFlag.PASSWORD)&& -!c.hasFieldFlag(f.AnnotationFieldFlag.FILESELECT)&&null!==c.data.maxLen;return c}F(d,c);u(d,[{key:"getOperatorList",value:function(b,c,e){if(e||this.appearance)return a(l(d.prototype),"getOperatorList",this).call(this,b,c,e);var h=new H.OperatorList;if(!this.data.defaultAppearance)return Promise.resolve(h);e=new K.Stream((0,f.stringToBytes)(this.data.defaultAppearance));return b.getOperatorList({stream:e,task:c,resources:this.fieldResources,operatorList:h}).then(function(){return h})}}]);return d}(A), -z=function(a){function c(a){n(this,c);var d=b(this,l(c).call(this,a));d.data.checkBox=!d.hasFieldFlag(f.AnnotationFieldFlag.RADIO)&&!d.hasFieldFlag(f.AnnotationFieldFlag.PUSHBUTTON);d.data.radioButton=d.hasFieldFlag(f.AnnotationFieldFlag.RADIO)&&!d.hasFieldFlag(f.AnnotationFieldFlag.PUSHBUTTON);d.data.pushButton=d.hasFieldFlag(f.AnnotationFieldFlag.PUSHBUTTON);d.data.checkBox?d._processCheckBox(a):d.data.radioButton?d._processRadioButton(a):d.data.pushButton?d._processPushButton(a):(0,f.warn)("Invalid field flags for button widget annotation"); -return d}F(c,a);u(c,[{key:"_processCheckBox",value:function(a){(0,d.isName)(this.data.fieldValue)&&(this.data.fieldValue=this.data.fieldValue.name);a=a.dict.get("AP");(0,d.isDict)(a)&&(a=a.get("D"),(0,d.isDict)(a)&&(a=a.getKeys(),2===a.length&&(this.data.exportValue="Off"===a[0]?a[1]:a[0])))}},{key:"_processRadioButton",value:function(a){this.data.fieldValue=this.data.buttonValue=null;var b=a.dict.get("Parent");(0,d.isDict)(b)&&b.has("V")&&(b=b.get("V"),(0,d.isName)(b)&&(this.data.fieldValue=b.name)); -a=a.dict.get("AP");if((0,d.isDict)(a)&&(a=a.get("N"),(0,d.isDict)(a))){a=a.getKeys();b=0;for(var c=a.length;bd)return c-(c-b)%4;var e=0;c=[];var n=0,l=1,q=1,h;for(h=0;hd)return c-(c-b)%4;var q=!1;n=k[f][0];if(0===k[m][1]&&0===k[m][2]){q=!0;var h=k[m][0],x=k[m][3];l=m+4;var A=f+4;for(c=1;cc?q=!1:d=c;break}}if(q){d=Math.min(d,1E3);f=new Float32Array(2*d);l=m;for(c=0;cf)return c-(c-b)%4;c=new Float32Array(2*f);for(var n=0;nh.fieldFlags)h.fieldFlags=0;h.readOnly=c.hasFieldFlag(f.AnnotationFieldFlag.READONLY);"Sig"===h.fieldType&&(h.fieldValue=null);return c}F(e,c);u(e,[{key:"_constructFieldName",value:function(a){if(!a.has("T")&&!a.has("Parent"))return(0,f.warn)("Unknown field name, falling back to empty field name."),"";if(!a.has("Parent"))return(0,f.stringToPDFString)(a.get("T"));var b=[];for(a.has("T")&&b.unshift((0, +f.stringToPDFString)(a.get("T")));a.has("Parent");){a=a.get("Parent");if(!(0,d.isDict)(a))break;a.has("T")&&b.unshift((0,f.stringToPDFString)(a.get("T")))}return b.join(".")}},{key:"hasFieldFlag",value:function(a){return!!(this.data.fieldFlags&a)}},{key:"getOperatorList",value:function(b,c,d){return d?Promise.resolve(new H.OperatorList):a(l(e.prototype),"getOperatorList",this).call(this,b,c,d)}}]);return e}(h),N=function(c){function d(a){n(this,d);var c=b(this,l(d).call(this,a));a=a.dict;c.data.fieldValue= +(0,f.stringToPDFString)(c.data.fieldValue||"");var e=(0,G.getInheritableProperty)({dict:a,key:"Q"});if(!Number.isInteger(e)||0>e||2a)a=null;c.data.maxLen=a;c.data.multiLine=c.hasFieldFlag(f.AnnotationFieldFlag.MULTILINE);c.data.comb=c.hasFieldFlag(f.AnnotationFieldFlag.COMB)&&!c.hasFieldFlag(f.AnnotationFieldFlag.MULTILINE)&&!c.hasFieldFlag(f.AnnotationFieldFlag.PASSWORD)&&!c.hasFieldFlag(f.AnnotationFieldFlag.FILESELECT)&& +null!==c.data.maxLen;return c}F(d,c);u(d,[{key:"getOperatorList",value:function(b,c,e){if(e||this.appearance)return a(l(d.prototype),"getOperatorList",this).call(this,b,c,e);var h=new H.OperatorList;if(!this.data.defaultAppearance)return Promise.resolve(h);e=new K.Stream((0,f.stringToBytes)(this.data.defaultAppearance));return b.getOperatorList({stream:e,task:c,resources:this.fieldResources,operatorList:h}).then(function(){return h})}}]);return d}(A),z=function(a){function c(a){n(this,c);var d=b(this, +l(c).call(this,a));d.data.checkBox=!d.hasFieldFlag(f.AnnotationFieldFlag.RADIO)&&!d.hasFieldFlag(f.AnnotationFieldFlag.PUSHBUTTON);d.data.radioButton=d.hasFieldFlag(f.AnnotationFieldFlag.RADIO)&&!d.hasFieldFlag(f.AnnotationFieldFlag.PUSHBUTTON);d.data.pushButton=d.hasFieldFlag(f.AnnotationFieldFlag.PUSHBUTTON);d.data.checkBox?d._processCheckBox(a):d.data.radioButton?d._processRadioButton(a):d.data.pushButton?d._processPushButton(a):(0,f.warn)("Invalid field flags for button widget annotation");return d} +F(c,a);u(c,[{key:"_processCheckBox",value:function(a){(0,d.isName)(this.data.fieldValue)&&(this.data.fieldValue=this.data.fieldValue.name);a=a.dict.get("AP");(0,d.isDict)(a)&&(a=a.get("D"),(0,d.isDict)(a)&&(a=a.getKeys(),2===a.length&&(this.data.exportValue="Off"===a[0]?a[1]:a[0])))}},{key:"_processRadioButton",value:function(a){this.data.fieldValue=this.data.buttonValue=null;var b=a.dict.get("Parent");(0,d.isDict)(b)&&b.has("V")&&(b=b.get("V"),(0,d.isName)(b)&&(this.data.fieldValue=b.name));a=a.dict.get("AP"); +if((0,d.isDict)(a)&&(a=a.get("N"),(0,d.isDict)(a))){a=a.getKeys();b=0;for(var c=a.length;bd)return c-(c-b)%4;var e=0;c=[];var n=0,l=1,q=1,h;for(h=0;h +d)return c-(c-b)%4;var q=!1;n=k[f][0];if(0===k[m][1]&&0===k[m][2]){q=!0;var h=k[m][0],x=k[m][3];l=m+4;var A=f+4;for(c=1;cc?q=!1:d=c;break}}if(q){d=Math.min(d,1E3);f=new Float32Array(2*d);l=m;for(c=0;cf)return c-(c-b)%4;c=new Float32Array(2*f);for(var n=0;na)return b-(b-g)%5;b=g;4<=g&&c[g-4]===c[d]&&c[g-3]===c[f-2]&&c[g-2]===c[f-1]&&c[g-1]===c[f]&&k[g-4][0]===e&&k[g-4][1]===l&&(a++,b-=5);b+=4;for(f=1;f=c)break}k=(k||g)[a[b]];if(!k||Array.isArray(k))b++;else{m.iCurr=b;b++;if(!k.checkFn||(0,k.checkFn)(m))f=k;k=null}}this.state=k;this.match=f;this.lastProcessed=b}else this.lastProcessed=c},push:function(a,b){this.queue.fnArray.push(a);this.queue.argsArray.push(b);this._optimize()},flush:function(){for(;this.match;){var a=this.queue.fnArray.length;this.lastProcessed=(0,this.match.processFn)(this.context,a);this.state= this.match=null;this._optimize()}},reset:function(){this.match=this.state=null;this.lastProcessed=0}};return c}(),b=function(){function a(a){this.queue=a}a.prototype={push:function(a,b){this.queue.fnArray.push(a);this.queue.argsArray.push(b)},flush:function(){},reset:function(){}};return a}();q=function(){function c(a,c,g){this.messageHandler=c;this.fnArray=[];this.argsArray=[];this.optimizer=c&&"oplist"!==a?new w(this):new b(this);this.dependencies=Object.create(null);this._totalLength=0;this.pageIndex=