Updated pdf.js to 1.7.225 (Fix #193)

This commit is contained in:
OzzieIsaacs
2017-05-13 14:01:52 +02:00
parent a73372d71a
commit 2b50dea304
120 changed files with 60681 additions and 55533 deletions
+80 -34
View File
@@ -12,9 +12,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* eslint strict: ["error", "function"] */
/* eslint-disable no-extend-native */
/* globals VBArray, PDFJS */
'use strict';
(function compatibilityWrapper() {
'use strict';
var userAgent = navigator.userAgent;
var isAndroid = /Android/.test(userAgent);
var isAndroidPre3 = /Android\s[0-2][^\d]/.test(userAgent);
var isAndroidPre5 = /Android\s[0-4][^\d]/.test(userAgent);
var isChrome = userAgent.indexOf('Chrom') >= 0;
var isChromeWithRangeBug = /Chrome\/(39|40)\./.test(userAgent);
var isIE = userAgent.indexOf('Trident') >= 0;
var isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent);
var isOpera = userAgent.indexOf('Opera') >= 0;
var isSafari = /Safari\//.test(userAgent) &&
!/(Chrome\/|Android\s)/.test(userAgent);
// Initializing PDFJS global object here, it case if we need to change/disable
// some PDF.js features, e.g. range requests
@@ -28,12 +44,12 @@ if (typeof PDFJS === 'undefined') {
if (typeof Uint8Array !== 'undefined') {
// Support: iOS<6.0
if (typeof Uint8Array.prototype.subarray === 'undefined') {
Uint8Array.prototype.subarray = function subarray(start, end) {
return new Uint8Array(this.slice(start, end));
};
Float32Array.prototype.subarray = function subarray(start, end) {
return new Float32Array(this.slice(start, end));
};
Uint8Array.prototype.subarray = function subarray(start, end) {
return new Uint8Array(this.slice(start, end));
};
Float32Array.prototype.subarray = function subarray(start, end) {
return new Float32Array(this.slice(start, end));
};
}
// Support: Android<4.1
@@ -186,9 +202,8 @@ if (typeof PDFJS === 'undefined') {
get: function xmlHttpRequestResponseGet() {
if (this.responseType === 'arraybuffer') {
return new Uint8Array(new VBArray(this.responseBody).toArray());
} else {
return this.responseText;
}
return this.responseText;
}
});
return;
@@ -256,7 +271,7 @@ if (typeof PDFJS === 'undefined') {
// initialize result and counters
var bc = 0, bs, buffer, idx = 0, output = '';
// get next character
buffer = input.charAt(idx++);
(buffer = input.charAt(idx++));
// character found in table?
// initialize bit storage and add its ascii value
~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,
@@ -428,7 +443,7 @@ if (typeof PDFJS === 'undefined') {
function isDisabled(node) {
return node.disabled || (node.parentNode && isDisabled(node.parentNode));
}
if (navigator.userAgent.indexOf('Opera') !== -1) {
if (isOpera) {
// use browser detection since we cannot feature-check this bug
document.addEventListener('click', ignoreIfTargetDisabled, true);
}
@@ -438,7 +453,7 @@ if (typeof PDFJS === 'undefined') {
// Support: IE
(function checkOnBlobSupport() {
// sometimes IE loosing the data created with createObjectURL(), see #3977
if (navigator.userAgent.indexOf('Trident') >= 0) {
if (isIE) {
PDFJS.disableCreateObjectURL = true;
}
})();
@@ -451,26 +466,19 @@ if (typeof PDFJS === 'undefined') {
PDFJS.locale = navigator.userLanguage || 'en-US';
})();
// Support: Safari 6.0+, Android<3.0, Chrome 39/40, iOS
(function checkRangeRequests() {
// Safari has issues with cached range requests see:
// https://github.com/mozilla/pdf.js/issues/3260
// Last tested with version 6.0.4.
// Support: Safari 6.0+
var isSafari = Object.prototype.toString.call(
window.HTMLElement).indexOf('Constructor') > 0;
// Older versions of Android (pre 3.0) has issues with range requests, see:
// https://github.com/mozilla/pdf.js/issues/3381.
// Make sure that we only match webkit-based Android browsers,
// since Firefox/Fennec works as expected.
// Support: Android<3.0
var regex = /Android\s[0-2][^\d]/;
var isOldAndroid = regex.test(navigator.userAgent);
// Range requests are broken in Chrome 39 and 40, https://crbug.com/442318
var isChromeWithRangeBug = /Chrome\/(39|40)\./.test(navigator.userAgent);
if (isSafari || isOldAndroid || isChromeWithRangeBug) {
if (isSafari || isAndroidPre3 || isChromeWithRangeBug || isIOS) {
PDFJS.disableRange = true;
PDFJS.disableStream = true;
}
@@ -482,7 +490,7 @@ if (typeof PDFJS === 'undefined') {
// Android 2.x has so buggy pushState support that it was removed in
// Android 3.0 and restored as late as in Android 4.2.
// Support: Android 2.x
if (!history.pushState || navigator.userAgent.indexOf('Android 2.') >= 0) {
if (!history.pushState || isAndroidPre3) {
PDFJS.disableHistory = true;
}
})();
@@ -502,17 +510,17 @@ if (typeof PDFJS === 'undefined') {
// Old Chrome and Android use an inaccessible CanvasPixelArray prototype.
// Because we cannot feature detect it, we rely on user agent parsing.
var polyfill = false, versionMatch;
if (navigator.userAgent.indexOf('Chrom') >= 0) {
versionMatch = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
if (isChrome) {
versionMatch = userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
// Chrome < 21 lacks the set function.
polyfill = versionMatch && parseInt(versionMatch[2]) < 21;
} else if (navigator.userAgent.indexOf('Android') >= 0) {
} else if (isAndroid) {
// Android < 4.4 lacks the set function.
// Android >= 4.4 will contain Chrome in the user agent,
// thus pass the Chrome check above and not reach this block.
polyfill = /Android\s[0-4][^\d]/g.test(navigator.userAgent);
} else if (navigator.userAgent.indexOf('Safari') >= 0) {
versionMatch = navigator.userAgent.
polyfill = isAndroidPre5;
} else if (isSafari) {
versionMatch = userAgent.
match(/Version\/([0-9]+)\.([0-9]+)\.([0-9]+) Safari\//);
// Safari < 6 lacks the set function.
polyfill = versionMatch && parseInt(versionMatch[1]) < 6;
@@ -542,7 +550,6 @@ if (typeof PDFJS === 'undefined') {
window.setTimeout(callback, 20);
}
var isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);
if (isIOS) {
// requestAnimationFrame on iOS is broken, replacing with fake one.
window.requestAnimationFrame = fakeRequestAnimationFrame;
@@ -557,9 +564,8 @@ if (typeof PDFJS === 'undefined') {
fakeRequestAnimationFrame;
})();
// Support: Android, iOS
(function checkCanvasSizeLimitation() {
var isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);
var isAndroid = /Android/g.test(navigator.userAgent);
if (isIOS || isAndroid) {
// 5MP
PDFJS.maxCanvasPixels = 5242880;
@@ -569,9 +575,7 @@ if (typeof PDFJS === 'undefined') {
// Disable fullscreen support for certain problematic configurations.
// Support: IE11+ (when embedded).
(function checkFullscreenSupport() {
var isEmbeddedIE = (navigator.userAgent.indexOf('Trident') >= 0 &&
window.parent !== window);
if (isEmbeddedIE) {
if (isIE && window.parent !== window) {
PDFJS.disableFullscreen = true;
}
})();
@@ -591,3 +595,45 @@ if (typeof PDFJS === 'undefined') {
configurable: true
});
})();
// Provides `input.type = 'type'` runtime failure protection.
// Support: IE9,10.
(function checkInputTypeNumberAssign() {
var el = document.createElement('input');
try {
el.type = 'number';
} catch (ex) {
var inputProto = el.constructor.prototype;
var typeProperty = Object.getOwnPropertyDescriptor(inputProto, 'type');
Object.defineProperty(inputProto, 'type', {
get: function () { return typeProperty.get.call(this); },
set: function (value) {
typeProperty.set.call(this, value === 'number' ? 'text' : value);
},
enumerable: true,
configurable: true
});
}
})();
// Provides correct document.readyState value for legacy browsers.
// Support: IE9,10.
(function checkDocumentReadyState() {
if (!document.attachEvent) {
return;
}
var documentProto = document.constructor.prototype;
var readyStateProto = Object.getOwnPropertyDescriptor(documentProto,
'readyState');
Object.defineProperty(documentProto, 'readyState', {
get: function () {
var value = readyStateProto.get.call(this);
return value === 'interactive' ? 'loading' : value;
},
set: function (value) { readyStateProto.set.call(this, value); },
enumerable: true,
configurable: true
});
})();
}).call((typeof window === 'undefined') ? this : window);
+14 -14
View File
@@ -158,6 +158,8 @@ var FontInspector = (function FontInspectorClosure() {
};
})();
var opMap;
// Manages all the page steppers.
var StepperManager = (function StepperManagerClosure() {
var steppers = [];
@@ -171,7 +173,7 @@ var StepperManager = (function StepperManagerClosure() {
name: 'Stepper',
panel: null,
manager: null,
init: function init() {
init: function init(pdfjsLib) {
var self = this;
this.panel.setAttribute('style', 'padding: 5px;');
stepperControls = document.createElement('div');
@@ -186,6 +188,11 @@ var StepperManager = (function StepperManagerClosure() {
if (sessionStorage.getItem('pdfjsBreakPoints')) {
breakPoints = JSON.parse(sessionStorage.getItem('pdfjsBreakPoints'));
}
opMap = Object.create(null);
for (var key in pdfjsLib.OPS) {
opMap[pdfjsLib.OPS[key]] = key;
}
},
cleanup: function cleanup() {
stepperChooser.textContent = '';
@@ -251,8 +258,6 @@ var Stepper = (function StepperClosure() {
return d;
}
var opMap = null;
function simplifyArgs(args) {
if (typeof args === 'string') {
var MAX_STRING_LENGTH = 75;
@@ -290,7 +295,7 @@ var Stepper = (function StepperClosure() {
this.operatorListIdx = 0;
}
Stepper.prototype = {
init: function init(pdfjsLib) {
init: function init(operatorList) {
var panel = this.panel;
var content = c('div', 'c=continue, s=step');
var table = c('table');
@@ -304,12 +309,7 @@ var Stepper = (function StepperClosure() {
headerRow.appendChild(c('th', 'args'));
panel.appendChild(content);
this.table = table;
if (!opMap) {
opMap = Object.create(null);
for (var key in pdfjsLib.OPS) {
opMap[pdfjsLib.OPS[key]] = key;
}
}
this.updateOperatorList(operatorList);
},
updateOperatorList: function updateOperatorList(operatorList) {
var self = this;
@@ -403,13 +403,13 @@ var Stepper = (function StepperClosure() {
var listener = function(e) {
switch (e.keyCode) {
case 83: // step
dom.removeEventListener('keydown', listener, false);
dom.removeEventListener('keydown', listener);
self.nextBreakPoint = self.currentIdx + 1;
self.goTo(-1);
callback();
break;
case 67: // continue
dom.removeEventListener('keydown', listener, false);
dom.removeEventListener('keydown', listener);
var breakPoint = self.getNextBreakPoint();
self.nextBreakPoint = breakPoint;
self.goTo(-1);
@@ -417,7 +417,7 @@ var Stepper = (function StepperClosure() {
break;
}
};
dom.addEventListener('keydown', listener, false);
dom.addEventListener('keydown', listener);
self.goTo(idx);
},
goTo: function goTo(idx) {
@@ -578,7 +578,7 @@ var PDFBug = (function PDFBugClosure() {
} else {
panel.textContent = tool.name + ' is disabled. To enable add ' +
' "' + tool.id + '" to the pdfBug parameter ' +
'and refresh (seperate multiple by commas).';
'and refresh (separate multiple by commas).';
}
buttons.push(panelButton);
}
+5 -4
View File
@@ -101,9 +101,7 @@ document.webL10n = (function(window, document, undefined) {
function xhrLoadText(url, onSuccess, onFailure) {
onSuccess = onSuccess || function _onSuccess(data) {};
onFailure = onFailure || function _onFailure() {
console.warn(url + ' not found.');
};
onFailure = onFailure || function _onFailure() {};
var xhr = new XMLHttpRequest();
xhr.open('GET', url, gAsyncResourceLoading);
@@ -244,7 +242,10 @@ document.webL10n = (function(window, document, undefined) {
function loadImport(url, callback) {
xhrLoadText(url, function(content) {
parseRawLines(content, false, callback); // don't allow recursive imports
}, null);
}, function () {
console.warn(url + ' not found.');
callback();
});
}
// fill the dictionary
+7157 -9007
View File
File diff suppressed because it is too large Load Diff
+44257 -36860
View File
File diff suppressed because it is too large Load Diff
+6521 -7929
View File
File diff suppressed because it is too large Load Diff