* @return {Promise} A promise that is resolved with {PDFDocumentProxy} object.
*/
PDFJS.getDocument = function getDocument(source) {
- var url, data, headers, password, parameters = {}, workerInitializedPromise, workerReadyPromise, transport;
+ var url, data, headers, password, parameters = {}, workerInitializedPromise,
+ workerReadyPromise, transport;
+
if (typeof source === 'string') {
url = source;
} else if (isArrayBuffer(source)) {
{
url: url,
progress: function getPDFProgress(evt) {
- if (evt.lengthComputable)
- workerReadyPromise.progress({
+ if (evt.lengthComputable) {
+ workerReadyPromise.progress({
loaded: evt.loaded,
total: evt.total
});
+ }
},
error: function getPDFError(e) {
- workerReadyPromise.reject('Unexpected server response of ' +
+ workerReadyPromise.reject('Unexpected server response of ' +
e.target.status + '.');
},
headers: headers
},
function getPDFLoad(data) {
- //we have to wait for the WorkerTransport to finalize worker-support detection! This may take a while...
- workerInitializedPromise.then(function () {
- transport.sendData(data, parameters);
- });
+ // sometimes the pdf has finished downloading before the web worker-test
+ // has finished. In that case the rendering of the final pdf would cause
+ // errors. We have to wait for the WorkerTransport to finalize worker-
+ // support detection
+ workerInitializedPromise.then(function workerInitialized() {
+ transport.sendData(data, parameters);
+ });
});
}
// Thus, we fallback to a faked worker.
globalScope.PDFJS.disableWorker = true;
this.setupFakeWorker();
- workerInitializedPromise.resolve();
+ workerInitializedPromise.resolve();
}
WorkerTransport.prototype = {
destroy: function WorkerTransport_destroy() {
// Checking if the typed arrays are supported
(function checkTypedArrayCompatibility() {
if (typeof Uint8Array !== 'undefined') {
- // some mobile versions do not support subarray (e.g. safari 5 / iPhone / iPad)
+ // some mobile versions do not support subarray (e.g. safari 5 / iOS)
if (typeof Uint8Array.prototype.subarray === 'undefined') {
Uint8Array.prototype.subarray = function subarray(start, end) {
return new Uint8Array(this.slice(start, end));
// Object.defineProperty() ?
(function checkObjectDefinePropertyCompatibility() {
- // safari 5 cannot use this on DOM objects and thus is unusable, see http://kangax.github.com/es5-compat-table/
- if ((typeof Object.defineProperty !== 'undefined') && /Safari\/5/.test(navigator.userAgent))
- return;
+ // safari 5 cannot use this on DOM objects and thus is unusable,
+ // see http://kangax.github.com/es5-compat-table/
+ if ((typeof Object.defineProperty !== 'undefined') &&
+ /Safari\/5/.test(navigator.userAgent)) return;
Object.defineProperty = function objectDefineProperty(obj, name, def) {
delete obj[name];