Set title using logic similar as download name

The download method (and the PDF document properties) detect the
file name using `getPDFFileNameFromURL`. The title ought to also
display the PDF filename if available.
This commit is contained in:
Rob Wu 2017-02-06 00:46:12 +01:00
parent 228d253f30
commit c67edabcb3
2 changed files with 16 additions and 9 deletions

View File

@ -569,14 +569,17 @@ var PDFViewerApplication = {
setTitleUsingUrl: function pdfViewSetTitleUsingUrl(url) {
this.url = url;
this.baseUrl = url.split('#')[0];
try {
this.setTitle(decodeURIComponent(
pdfjsLib.getFilenameFromUrl(url)) || url);
} catch (e) {
// decodeURIComponent may throw URIError,
// fall back to using the unprocessed url in that case
this.setTitle(url);
var title = getPDFFileNameFromURL(url, '');
if (!title) {
try {
title = decodeURIComponent(pdfjsLib.getFilenameFromUrl(url)) || url;
} catch (e) {
// decodeURIComponent may throw URIError,
// fall back to using the unprocessed url in that case
title = url;
}
}
this.setTitle(title);
},
setTitle: function pdfViewSetTitle(title) {

View File

@ -368,9 +368,13 @@ function noContextMenuHandler(e) {
/**
* Returns the filename or guessed filename from the url (see issue 3455).
* url {String} The original PDF location.
* defaultFilename {string} The value to return if the file name is unknown.
* @return {String} Guessed PDF file name.
*/
function getPDFFileNameFromURL(url) {
function getPDFFileNameFromURL(url, defaultFilename) {
if (typeof defaultFilename === 'undefined') {
defaultFilename = 'document.pdf';
}
var reURI = /^(?:(?:[^:]+:)?\/\/[^\/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
// SCHEME HOST 1.PATH 2.QUERY 3.REF
// Pattern to get last matching NAME.pdf
@ -392,7 +396,7 @@ function getPDFFileNameFromURL(url) {
}
}
}
return suggestedFilename || 'document.pdf';
return suggestedFilename || defaultFilename;
}
function normalizeWheelEventDelta(evt) {