1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-26 01:58:06 +02:00

Separate page objects/images from the fonts; does not store large images

This commit is contained in:
Yury Delendik 2012-10-28 15:10:34 -05:00
parent d2c1868497
commit 69b72078c0
7 changed files with 97 additions and 73 deletions

View file

@ -97,8 +97,8 @@ globalScope.PDFJS.getPdf = getPdf;
globalScope.PDFJS.pdfBug = false;
var Page = (function PageClosure() {
function Page(xref, pageNumber, pageDict, ref) {
this.pageNumber = pageNumber;
function Page(xref, pageIndex, pageDict, ref) {
this.pageIndex = pageIndex;
this.pageDict = pageDict;
this.xref = xref;
this.ref = ref;
@ -167,14 +167,11 @@ var Page = (function PageClosure() {
}
return shadow(this, 'rotate', rotate);
},
getOperatorList: function Page_getOperatorList(handler, dependency) {
var xref = this.xref;
getContentStream: function Page_getContentStream() {
var content = this.content;
var resources = this.resources;
if (isArray(content)) {
// fetching items
var streams = [];
var xref = this.xref;
var i, n = content.length;
var streams = [];
for (i = 0; i < n; ++i)
@ -184,13 +181,19 @@ var Page = (function PageClosure() {
content.reset();
} else if (!content) {
// replacing non-existent page content with empty one
content = new Stream(new Uint8Array(0));
content = new NullStream();
}
return content;
},
getOperatorList: function Page_getOperatorList(handler, dependency) {
var xref = this.xref;
var contentStream = this.getContentStream();
var resources = this.resources;
var pe = this.pe = new PartialEvaluator(
xref, handler, 'p' + this.pageNumber + '_');
xref, handler, this.pageIndex,
'p' + this.pageIndex + '_');
return pe.getOperatorList(content, resources, dependency);
return pe.getOperatorList(contentStream, resources, dependency);
},
extractTextContent: function Page_extractTextContent() {
var handler = {
@ -199,40 +202,13 @@ var Page = (function PageClosure() {
};
var xref = this.xref;
var content = xref.fetchIfRef(this.content);
var contentStream = this.getContentStream();
var resources = xref.fetchIfRef(this.resources);
if (isArray(content)) {
// fetching items
var i, n = content.length;
var streams = [];
for (i = 0; i < n; ++i)
streams.push(xref.fetchIfRef(content[i]));
content = new StreamsSequenceStream(streams);
} else if (isStream(content)) {
content.reset();
}
var pe = new PartialEvaluator(
xref, handler, 'p' + this.pageNumber + '_');
return pe.getTextContent(content, resources);
},
ensureFonts: function Page_ensureFonts(fonts, callback) {
this.stats.time('Font Loading');
// Convert the font names to the corresponding font obj.
for (var i = 0, ii = fonts.length; i < ii; i++) {
fonts[i] = this.objs.objs[fonts[i]].data;
}
// Load all the fonts
FontLoader.bind(
fonts,
function pageEnsureFontsFontObjs(fontObjs) {
this.stats.timeEnd('Font Loading');
callback.call(this);
}.bind(this)
);
xref, handler, this.pageIndex,
'p' + this.pageIndex + '_');
return pe.getTextContent(contentStream, resources);
},
getLinks: function Page_getLinks() {
var links = [];