Skip to content

Commit b272cb7

Browse files
committed
Using readAsArrayBuffer
1 parent c515bd2 commit b272cb7

File tree

2 files changed

+38
-9
lines changed

2 files changed

+38
-9
lines changed

web/compatibility.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,42 @@
124124
};
125125
})();
126126

127+
// No readAsArrayBuffer ?
128+
(function checkFileReaderReadAsArrayBuffer() {
129+
if (typeof FileReader === 'undefined')
130+
return; // FileReader is not implemented
131+
var frPrototype = FileReader.prototype;
132+
// Older versions of Firefox might not have readAsArrayBuffer
133+
if ('readAsArrayBuffer' in frPrototype)
134+
return; // readAsArrayBuffer is implemented
135+
Object.defineProperty(frPrototype, 'readAsArrayBuffer', {
136+
value: function fileReaderReadAsArrayBuffer(blob) {
137+
var fileReader = new FileReader();
138+
var originalReader = this;
139+
fileReader.onload = function fileReaderOnload(evt) {
140+
var data = evt.target.result;
141+
var buffer = new ArrayBuffer(data.length);
142+
var uint8Array = new Uint8Array(buffer);
143+
144+
for (var i = 0; i < data.length; i++)
145+
uint8Array[i] = data.charCodeAt(i);
146+
147+
Object.defineProperty(originalReader, 'result', {
148+
value: buffer,
149+
enumerable: true,
150+
writable: false,
151+
configurable: true
152+
});
153+
154+
var event = document.createEvent('HTMLEvents');
155+
event.initEvent('load', false, false);
156+
originalReader.dispatchEvent(event);
157+
};
158+
fileReader.readAsBinaryString(blob);
159+
}
160+
});
161+
})();
162+
127163
// No XMLHttpRequest.response ?
128164
(function checkXMLHttpRequestResponseCompatibility() {
129165
var xhrPrototype = XMLHttpRequest.prototype;

web/viewer.js

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1944,20 +1944,13 @@ window.addEventListener('change', function webViewerChange(evt) {
19441944
// Read the local file into a Uint8Array.
19451945
var fileReader = new FileReader();
19461946
fileReader.onload = function webViewerChangeFileReaderOnload(evt) {
1947-
var data = evt.target.result;
1948-
var buffer = new ArrayBuffer(data.length);
1947+
var buffer = evt.target.result;
19491948
var uint8Array = new Uint8Array(buffer);
1950-
1951-
for (var i = 0; i < data.length; i++)
1952-
uint8Array[i] = data.charCodeAt(i);
1953-
19541949
PDFView.open(uint8Array, 0);
19551950
};
19561951

1957-
// Read as a binary string since "readAsArrayBuffer" is not yet
1958-
// implemented in Firefox.
19591952
var file = files[0];
1960-
fileReader.readAsBinaryString(file);
1953+
fileReader.readAsArrayBuffer(file);
19611954
document.title = file.name;
19621955

19631956
// URL does not reflect proper document location - hiding some icons.

0 commit comments

Comments
 (0)