Fixes PDFViewerApplication.open/close methods signature.
This commit is contained in:
parent
5135aa9bec
commit
62afa9f695
@ -64,7 +64,7 @@ var ChromeCom = (function ChromeComClosure() {
|
||||
var streamUrl = response.streamUrl;
|
||||
if (streamUrl) {
|
||||
console.log('Found data stream for ' + file);
|
||||
PDFViewerApplication.open(streamUrl, 0, undefined, undefined, {
|
||||
PDFViewerApplication.open(streamUrl, {
|
||||
length: response.contentLength
|
||||
});
|
||||
PDFViewerApplication.setTitleUsingUrl(file);
|
||||
@ -91,7 +91,7 @@ var ChromeCom = (function ChromeComClosure() {
|
||||
resolveLocalFileSystemURL(file, function onResolvedFSURL(fileEntry) {
|
||||
fileEntry.file(function(fileObject) {
|
||||
var blobUrl = URL.createObjectURL(fileObject);
|
||||
PDFViewerApplication.open(blobUrl, 0, undefined, undefined, {
|
||||
PDFViewerApplication.open(blobUrl, {
|
||||
length: fileObject.size
|
||||
});
|
||||
});
|
||||
@ -100,7 +100,7 @@ var ChromeCom = (function ChromeComClosure() {
|
||||
// usual way of getting the File's data (via the Web worker).
|
||||
console.warn('Cannot resolve file ' + file + ', ' + error.name + ' ' +
|
||||
error.message);
|
||||
PDFViewerApplication.open(file, 0);
|
||||
PDFViewerApplication.open(file);
|
||||
});
|
||||
return;
|
||||
}
|
||||
@ -109,7 +109,7 @@ var ChromeCom = (function ChromeComClosure() {
|
||||
// There is no UI to input a different URL, so this assumption will hold
|
||||
// for now.
|
||||
setReferer(file, function() {
|
||||
PDFViewerApplication.open(file, 0);
|
||||
PDFViewerApplication.open(file);
|
||||
});
|
||||
return;
|
||||
}
|
||||
@ -122,14 +122,14 @@ var ChromeCom = (function ChromeComClosure() {
|
||||
}
|
||||
isAllowedFileSchemeAccess(function(isAllowedAccess) {
|
||||
if (isAllowedAccess) {
|
||||
PDFViewerApplication.open(file, 0);
|
||||
PDFViewerApplication.open(file);
|
||||
} else {
|
||||
requestAccessToLocalFile(file);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
PDFViewerApplication.open(file, 0);
|
||||
PDFViewerApplication.open(file);
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -92,6 +92,7 @@ var PDFViewerApplication = {
|
||||
initialized: false,
|
||||
fellback: false,
|
||||
pdfDocument: null,
|
||||
pdfLoadingTask: null,
|
||||
sidebarOpen: false,
|
||||
printing: false,
|
||||
/** @type {PDFViewer} */
|
||||
@ -434,8 +435,8 @@ var PDFViewerApplication = {
|
||||
pdfDataRangeTransport =
|
||||
new FirefoxComDataRangeTransport(args.length, args.data);
|
||||
|
||||
PDFViewerApplication.open(args.pdfUrl, 0, undefined,
|
||||
pdfDataRangeTransport);
|
||||
PDFViewerApplication.open(args.pdfUrl,
|
||||
{range: pdfDataRangeTransport});
|
||||
|
||||
if (args.length) {
|
||||
PDFViewerApplication.pdfDocumentProperties
|
||||
@ -460,7 +461,7 @@ var PDFViewerApplication = {
|
||||
'An error occurred while loading the PDF.'), e);
|
||||
break;
|
||||
}
|
||||
PDFViewerApplication.open(args.data, 0);
|
||||
PDFViewerApplication.open(args.data);
|
||||
break;
|
||||
}
|
||||
});
|
||||
@ -487,36 +488,76 @@ var PDFViewerApplication = {
|
||||
document.title = title;
|
||||
},
|
||||
|
||||
/**
|
||||
* Closes opened PDF document.
|
||||
* @returns {Promise} - Returns the promise, which is resolved when all
|
||||
* destruction is completed.
|
||||
*/
|
||||
close: function pdfViewClose() {
|
||||
var errorWrapper = document.getElementById('errorWrapper');
|
||||
errorWrapper.setAttribute('hidden', 'true');
|
||||
|
||||
if (!this.pdfDocument) {
|
||||
return;
|
||||
if (!this.pdfLoadingTask) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
this.pdfDocument.destroy();
|
||||
this.pdfDocument = null;
|
||||
var promise = this.pdfLoadingTask.destroy();
|
||||
this.pdfLoadingTask = null;
|
||||
|
||||
this.pdfThumbnailViewer.setDocument(null);
|
||||
this.pdfViewer.setDocument(null);
|
||||
this.pdfLinkService.setDocument(null, null);
|
||||
if (this.pdfDocument) {
|
||||
this.pdfDocument = null;
|
||||
|
||||
this.pdfThumbnailViewer.setDocument(null);
|
||||
this.pdfViewer.setDocument(null);
|
||||
this.pdfLinkService.setDocument(null, null);
|
||||
}
|
||||
|
||||
if (typeof PDFBug !== 'undefined') {
|
||||
PDFBug.cleanup();
|
||||
}
|
||||
return promise;
|
||||
},
|
||||
|
||||
// TODO(mack): This function signature should really be pdfViewOpen(url, args)
|
||||
open: function pdfViewOpen(file, scale, password,
|
||||
pdfDataRangeTransport, args) {
|
||||
if (this.pdfDocument) {
|
||||
// Reload the preferences if a document was previously opened.
|
||||
Preferences.reload();
|
||||
/**
|
||||
* Opens PDF document specified by URL or array with additional arguments.
|
||||
* @param {string|TypedArray|ArrayBuffer} file - PDF location or binary data.
|
||||
* @param {Object} args - (optional) Additional arguments for the getDocument
|
||||
* call, e.g. HTTP headers ('httpHeaders') or
|
||||
* alternative data transport ('range').
|
||||
* @returns {Promise} - Returns the promise, which is resolved when document
|
||||
* is opened.
|
||||
*/
|
||||
open: function pdfViewOpen(file, args) {
|
||||
var scale = 0;
|
||||
if (arguments.length > 2 || typeof args === 'number') {
|
||||
console.warn('Call of open() with obsolete signature.');
|
||||
if (typeof args === 'number') {
|
||||
scale = args; // scale argument was found
|
||||
}
|
||||
args = arguments[4] || null;
|
||||
if (arguments[3] && typeof arguments[3] === 'object') {
|
||||
// The pdfDataRangeTransport argument is present.
|
||||
args = Object.create(args);
|
||||
args.range = arguments[3];
|
||||
}
|
||||
if (typeof arguments[2] === 'string') {
|
||||
// The password argument is present.
|
||||
args = Object.create(args);
|
||||
args.password = arguments[2];
|
||||
}
|
||||
}
|
||||
this.close();
|
||||
|
||||
var parameters = {password: password};
|
||||
if (this.pdfLoadingTask) {
|
||||
// We need to destroy already opened document.
|
||||
return this.close().then(function () {
|
||||
// Reload the preferences if a document was previously opened.
|
||||
Preferences.reload();
|
||||
// ... and repeat the open() call.
|
||||
return this.open(file, args);
|
||||
}.bind(this));
|
||||
}
|
||||
|
||||
var parameters = Object.create(null);
|
||||
if (typeof file === 'string') { // URL
|
||||
this.setTitleUsingUrl(file);
|
||||
parameters.url = file;
|
||||
@ -526,9 +567,6 @@ var PDFViewerApplication = {
|
||||
this.setTitleUsingUrl(file.originalUrl);
|
||||
parameters.url = file.url;
|
||||
}
|
||||
if (pdfDataRangeTransport) {
|
||||
parameters.range = pdfDataRangeTransport;
|
||||
}
|
||||
if (args) {
|
||||
for (var prop in args) {
|
||||
parameters[prop] = args[prop];
|
||||
@ -539,6 +577,7 @@ var PDFViewerApplication = {
|
||||
self.downloadComplete = false;
|
||||
|
||||
var loadingTask = PDFJS.getDocument(parameters);
|
||||
this.pdfLoadingTask = loadingTask;
|
||||
|
||||
loadingTask.onPassword = function passwordNeeded(updatePassword, reason) {
|
||||
PasswordPrompt.updatePassword = updatePassword;
|
||||
@ -550,7 +589,7 @@ var PDFViewerApplication = {
|
||||
self.progress(progressData.loaded / progressData.total);
|
||||
};
|
||||
|
||||
loadingTask.promise.then(
|
||||
var result = loadingTask.promise.then(
|
||||
function getDocumentCallback(pdfDocument) {
|
||||
self.load(pdfDocument, scale);
|
||||
},
|
||||
@ -576,12 +615,15 @@ var PDFViewerApplication = {
|
||||
message: message
|
||||
};
|
||||
self.error(loadingErrorMessage, moreInfo);
|
||||
|
||||
throw new Error(loadingErrorMessage);
|
||||
}
|
||||
);
|
||||
|
||||
if (args && args.length) {
|
||||
PDFViewerApplication.pdfDocumentProperties.setFileSize(args.length);
|
||||
}
|
||||
return result;
|
||||
},
|
||||
|
||||
download: function pdfViewDownload() {
|
||||
@ -1008,6 +1050,9 @@ var PDFViewerApplication = {
|
||||
},
|
||||
|
||||
cleanup: function pdfViewCleanup() {
|
||||
if (!this.pdfDocument) {
|
||||
return; // run cleanup when document is loaded
|
||||
}
|
||||
this.pdfViewer.cleanup();
|
||||
this.pdfThumbnailViewer.cleanup();
|
||||
this.pdfDocument.cleanup();
|
||||
@ -1502,7 +1547,7 @@ function webViewerInitialized() {
|
||||
PDFViewerApplication.setTitleUsingUrl(file);
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.onload = function() {
|
||||
PDFViewerApplication.open(new Uint8Array(xhr.response), 0);
|
||||
PDFViewerApplication.open(new Uint8Array(xhr.response));
|
||||
};
|
||||
try {
|
||||
xhr.open('GET', file);
|
||||
@ -1516,7 +1561,7 @@ function webViewerInitialized() {
|
||||
}
|
||||
|
||||
if (file) {
|
||||
PDFViewerApplication.open(file, 0);
|
||||
PDFViewerApplication.open(file);
|
||||
}
|
||||
//#endif
|
||||
//#if CHROME
|
||||
@ -1731,14 +1776,14 @@ window.addEventListener('change', function webViewerChange(evt) {
|
||||
|
||||
if (!PDFJS.disableCreateObjectURL &&
|
||||
typeof URL !== 'undefined' && URL.createObjectURL) {
|
||||
PDFViewerApplication.open(URL.createObjectURL(file), 0);
|
||||
PDFViewerApplication.open(URL.createObjectURL(file));
|
||||
} else {
|
||||
// Read the local file into a Uint8Array.
|
||||
var fileReader = new FileReader();
|
||||
fileReader.onload = function webViewerChangeFileReaderOnload(evt) {
|
||||
var buffer = evt.target.result;
|
||||
var uint8Array = new Uint8Array(buffer);
|
||||
PDFViewerApplication.open(uint8Array, 0);
|
||||
PDFViewerApplication.open(uint8Array);
|
||||
};
|
||||
fileReader.readAsArrayBuffer(file);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user