Now also fetch 'Document Info Dictionary', and expose 'raw' metadata attributes
This commit is contained in:
parent
ab198e89cc
commit
edc1694620
22
src/core.js
22
src/core.js
@ -587,13 +587,15 @@ var PDFDocModel = (function PDFDocModelClosure() {
|
|||||||
this.mainXRefEntriesOffset);
|
this.mainXRefEntriesOffset);
|
||||||
this.xref = xref;
|
this.xref = xref;
|
||||||
this.catalog = new Catalog(xref);
|
this.catalog = new Catalog(xref);
|
||||||
if (xref.trailer && xref.trailer.has('ID')) {
|
if (xref.trailer) {
|
||||||
var fileID = '';
|
if (xref.trailer.has('ID')) {
|
||||||
var id = xref.fetchIfRef(xref.trailer.get('ID'))[0];
|
var fileID = '';
|
||||||
id.split('').forEach(function(el) {
|
var id = xref.fetchIfRef(xref.trailer.get('ID'))[0];
|
||||||
fileID += Number(el.charCodeAt(0)).toString(16);
|
id.split('').forEach(function(el) {
|
||||||
});
|
fileID += Number(el.charCodeAt(0)).toString(16);
|
||||||
this.fileID = fileID;
|
});
|
||||||
|
this.fileID = fileID;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
get numPages() {
|
get numPages() {
|
||||||
@ -602,6 +604,11 @@ var PDFDocModel = (function PDFDocModelClosure() {
|
|||||||
// shadow the prototype getter
|
// shadow the prototype getter
|
||||||
return shadow(this, 'numPages', num);
|
return shadow(this, 'numPages', num);
|
||||||
},
|
},
|
||||||
|
getDocumentInfo: function pdfDocGetDocumentInfo() {
|
||||||
|
if (this.xref.trailer.has('Info')) {
|
||||||
|
return this.xref.fetch(this.xref.trailer.get('Info'));
|
||||||
|
}
|
||||||
|
},
|
||||||
getFingerprint: function pdfDocGetFingerprint() {
|
getFingerprint: function pdfDocGetFingerprint() {
|
||||||
if (this.fileID) {
|
if (this.fileID) {
|
||||||
return this.fileID;
|
return this.fileID;
|
||||||
@ -645,6 +652,7 @@ var PDFDoc = (function PDFDocClosure() {
|
|||||||
this.stream = stream;
|
this.stream = stream;
|
||||||
this.pdfModel = new PDFDocModel(stream);
|
this.pdfModel = new PDFDocModel(stream);
|
||||||
this.fingerprint = this.pdfModel.getFingerprint();
|
this.fingerprint = this.pdfModel.getFingerprint();
|
||||||
|
this.info = this.pdfModel.getDocumentInfo();
|
||||||
this.catalog = this.pdfModel.catalog;
|
this.catalog = this.pdfModel.catalog;
|
||||||
this.objs = new PDFObjects();
|
this.objs = new PDFObjects();
|
||||||
|
|
||||||
|
@ -44,25 +44,7 @@ var Metadata = (function MetadataClosure() {
|
|||||||
for (ii = 0, iLength = entries.length; ii < iLength; ii++) {
|
for (ii = 0, iLength = entries.length; ii < iLength; ii++) {
|
||||||
var entry = entries[ii];
|
var entry = entries[ii];
|
||||||
var name = entry.nodeName.toLowerCase();
|
var name = entry.nodeName.toLowerCase();
|
||||||
var entryName = name.split(':');
|
this.metadata[name] = entry.textContent.trim();
|
||||||
entryName = (entryName.length > 1) ? entryName[1] : entryName[0];
|
|
||||||
switch (name) {
|
|
||||||
case 'pdf:moddate':
|
|
||||||
case 'xap:createdate':
|
|
||||||
case 'xap:metadatadate':
|
|
||||||
case 'xap:modifydate':
|
|
||||||
this.metadata[entryName] = new Date(entry.textContent.trim());
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
// For almost all entries we just add them to the metadata object
|
|
||||||
if (this.metadata[entryName]) {
|
|
||||||
this.metadata[name] = entry.textContent.trim();
|
|
||||||
} else {
|
|
||||||
this.metadata[entryName] = entry.textContent.trim();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -501,12 +501,23 @@ var PDFView = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var metadata = pdf.catalog.metadata;
|
var metadata = pdf.catalog.metadata;
|
||||||
|
var info = pdf.info;
|
||||||
|
var pdfTitle;
|
||||||
|
|
||||||
if (metadata) {
|
if (metadata) {
|
||||||
this.metadata = metadata = new Metadata(metadata);
|
this.metadata = metadata = new Metadata(metadata);
|
||||||
if (metadata.has('title')) {
|
if (metadata.has('dc:title')) {
|
||||||
document.title = metadata.get('title');
|
pdfTitle = metadata.get('dc:title');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (info && info.has('Title') && !pdfTitle) {
|
||||||
|
pdfTitle = info.get('Title');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pdfTitle) {
|
||||||
|
document.title = pdfTitle;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
setHash: function pdfViewSetHash(hash) {
|
setHash: function pdfViewSetHash(hash) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user