Let PDFAttachmentViewer._bindPdfLink
fallback to downloading the PDF file, when opening the blobUrl
fails
This is a simple work-around for https://bugzilla.mozilla.org/show_bug.cgi?id=1632644 which was caused by platform changes in Firefox. Ideally the Firefox bug should still be fixed, but these PDF.js changes seem generally useful to prevent both current and future issues here.
This commit is contained in:
parent
cd666e3a37
commit
fd9f3d7d5e
@ -83,7 +83,7 @@ class PDFAttachmentViewer {
|
||||
);
|
||||
}
|
||||
let blobUrl;
|
||||
button.onclick = function () {
|
||||
button.onclick = () => {
|
||||
if (!blobUrl) {
|
||||
blobUrl = URL.createObjectURL(
|
||||
new Blob([content], { type: "application/pdf" })
|
||||
@ -93,6 +93,9 @@ class PDFAttachmentViewer {
|
||||
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) {
|
||||
// The current URL is the viewer, let's use it and append the file.
|
||||
viewerUrl = "?file=" + encodeURIComponent(blobUrl + "#" + filename);
|
||||
} else if (PDFJSDev.test("MOZCENTRAL")) {
|
||||
// Let Firefox's content handler catch the URL and display the PDF.
|
||||
viewerUrl = blobUrl + "?" + encodeURIComponent(filename);
|
||||
} else if (PDFJSDev.test("CHROME")) {
|
||||
// In the Chrome extension, the URL is rewritten using the history API
|
||||
// in viewer.js, so an absolute URL must be generated.
|
||||
@ -101,11 +104,17 @@ class PDFAttachmentViewer {
|
||||
chrome.runtime.getURL("/content/web/viewer.html") +
|
||||
"?file=" +
|
||||
encodeURIComponent(blobUrl + "#" + filename);
|
||||
} else if (PDFJSDev.test("MOZCENTRAL")) {
|
||||
// Let Firefox's content handler catch the URL and display the PDF.
|
||||
viewerUrl = blobUrl + "?" + encodeURIComponent(filename);
|
||||
}
|
||||
window.open(viewerUrl);
|
||||
try {
|
||||
window.open(viewerUrl);
|
||||
} catch (ex) {
|
||||
console.error(`_bindPdfLink: ${ex}`);
|
||||
// Release the `blobUrl`, since opening it failed...
|
||||
URL.revokeObjectURL(blobUrl);
|
||||
blobUrl = null;
|
||||
// ... and fallback to downloading the PDF file.
|
||||
this.downloadManager.downloadData(content, filename, "application/pdf");
|
||||
}
|
||||
return false;
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user