// shadow the prototype getter
return shadow(this, 'numPages', num);
},
+ getFingerprint: function pdfDocGetFingerprint() {
+ if(this.fileID) {
+ return this.fileID;
+ } else {
+ // If we got no fileID, then we generate one, from the first 100 bytes of PDF
+ var data = this.stream.bytes.subarray(0, 100);
+ var hash = calculateMD5(data, 0, data.length);
+ var strHash = '';
+ for(var i = 0, length = hash.length; i < length; i++) {
+ strHash += Number(hash[i]).toString(16);
+ }
+
+ return strHash;
+ }
+ },
getPage: function pdfDocGetPage(n) {
return this.catalog.getPage(n);
}
this.data = data;
this.stream = stream;
this.pdf = new PDFDocModel(stream);
- this.fileID = this.pdf.fileID;
+ this.fingerprint = this.pdf.getFingerprint();
this.catalog = this.pdf.catalog;
this.objs = new PDFObjects();
pagesRefMap[pageRef.num + ' ' + pageRef.gen + ' R'] = i;
}
- var id = pdf.fileID;
+ var id = pdf.fingerprint;
if (id) {
var scroll = Settings.get(id + '.scroll', -1);
if (scroll != -1) {
window.addEventListener('scroll', function webViewerScroll(evt) {
updateViewarea();
- var fileID;
- if((fileID = PDFView.pages[0].content.pdf.fileID)) {
- Settings.set(fileID+'.scroll', window.pageYOffset);
+ var id;
+ if((id = PDFView.pages[0].content.pdf.fingerprint)) {
+ Settings.set(id+'.scroll', window.pageYOffset);
}
}, true);